Я создаю проект Qt, используя flex и bison.Существует зависимость между файлом заголовка _CMPL_Parser.hh
(созданным Bison) и файлом заголовка compile.hh
(#include _CMPL_Parser.hh
).
Я использую QMAKE_EXTRA_COMPILERS
, чтобы включить flex и bison в мой проект (см. Часть моего файла проекта ниже).К сожалению, _CMPL_Parser.hh
создается после того, как компилятору нужен этот файл для включения его в compiler.hh -> compiler.cc
.
...
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
bisonheader.commands=@true
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
должен быть создан до того, как его будут использовать другие файлы?
Спасибо.