flex와 bison을 사용하여 Qt 프로젝트를 만들고 있습니다. 헤더 파일 _CMPL_Parser.hh
(bison에서 생성)과 헤더 파일 compile.hh
(#include _CMPL_Parser.hh
) 사이에는 종속성이 있습니다.QMAKE_EXTRA_COMPILERS - 헤더 파일 간의 종속성 문제
내 프로젝트에 flex 및 bison을 포함 시키려면 QMAKE_EXTRA_COMPILERS
을 사용합니다 (아래 프로젝트 파일 부분 참조). 컴파일러에서 compiler.hh -> compiler.cc
에이 파일을 포함해야한다면 불행히도 _CMPL_Parser.hh
이 생성됩니다.
...
FLEX_SOURCES = src/cmpl/CMPL_Scanner.l
BISON_SOURCES = src/cmpl/CMPL_Parser.yy
flex.commands=flex -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
flex.output= $$OUT_PWD/_CMPL_Scanner.cc
flex.input=FLEX_SOURCES
flex.variable_out=SOURCES
flex.name=flex ${QMAKE_FILE_IN}
QMAKE_EXTRA_COMPILERS+=flex
bisonsource.commands=bison -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
bisonsource.output= $$OUT_PWD/_CMPL_Parser.cc
bisonsource.input=BISON_SOURCES
bisonsource.variable_out=SOURCES
bisonsource.name=bisonsource ${QMAKE_FILE_IN}
QMAKE_EXTRA_COMPILERS+=bisonsource
[email protected]
bisonheader.output= $$OUT_PWD/_CMPL_Parser.hh
bisonheader.input=BISON_SOURCES
bisonheader.variable_out=HEADERS
bisonheader.name=bisonheader ${QMAKE_FILE_IN}
#bisonheader.depends= bin/_CMPL_Parser.cc
QMAKE_EXTRA_COMPILERS+=bisonheader
...
HEADERS += src/cmpl/Compiler.hh \
src/cmpl/FileIO.hh \
...
SOURCES += src/cmpl/Compiler.cc \
src/cmpl/FileIO.cc \
...
또한 프로젝트 파일에 다음 종속성을 정의하려고했습니다. 그러나 실패했다.
chh.input = src/cmpl/Compiler.hh
chh.depends = $$OUT_PWD/_CMPL_Parser.hh
chh.name = chh
chh.dependency_type = TYPE_C
chh.variable_out = HEADERS
QMAKE_EXTRA_COMPILERS += chh
어떻게 _CMPL_Parser.hh
이 다른 파일에 의해 사용되기 전에 생성하는 것입니다 표현할 수 있습니까?
감사합니다.