[CMake] Bison extra headers

Hilton Medeiros medeiros.hilton at gmail.com
Thu Feb 11 07:57:44 EST 2010


Hello,

I'm using bison_target() from FindBISON with the C++ bison interface,
on CMake 2.8.0. When using this interface the following extra files
are generated by bison:

location.hh
position.hh
stack.hh

They do not get listed in BISON_target_OUTPUTS and do not get erased in
'make clean'. 

See here:
http://www.gnu.org/software/bison/manual/html_node/C_002b_002b-Bison-Interface.html

Note that this manual seems outdated, there is no 'lalr1.c' for me,
only 'lalr1.cc' on bison 2.4.1. Anyway, this is a very small issue,
this is the workaround I'm using:

set (BISON_EXTRA_HEADERS
    ${PROJECT_BINARY_DIR}/position.hh
    ${PROJECT_BINARY_DIR}/location.hh
    ${PROJECT_BINARY_DIR}/stack.hh
)

set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
"${BISON_EXTRA_HEADERS}")

By the way, I saw that the main header file generated on
bison_target() is always terminated by '.hpp'. I tried to bypass this
with:

bison_target (PARSER ${PARSER_FILE} ${PROJECT_BINARY_DIR}/Parser.cpp
              COMPILE_FLAGS --defines="${PROJECT_BINARY_DIR}/Parser.h")

But then both Parser.hpp and Parser.h are generated. But this is also a
very small issue.

Finally, thanks a lot for supporting bison and flex in CMake.

Kind regards,
visibility guy


More information about the CMake mailing list