FindBison module bug: incorrect name escape
Take this example: https://github.com/tilir/cpp-graduate/blob/master/07-parsers/advgrammar/CMakeLists.txt
Critical place:
bison_target(parser
numgrammar.y
${CMAKE_CURRENT_BINARY_DIR}/parser.cc
COMPILE_FLAGS "--defines=${CMAKE_CURRENT_BINARY_DIR}/numgrammar.tab.hh")
Then please create some folder with space inside name like:
> mkdir "test folder" && cd "test folder"
> cmake ${ADVGRAMMAR}
> make VERBOSE=1
You will see something like:
/usr/bin/bison --defines=/mnt/c/research/test folder/advgrammar/build/numgrammar.tab.hh -d -o ....
You see the problem: space in "test folder" not escaped.
Ok, now lets try to escape:
bison_target(parser
numgrammar.y
${CMAKE_CURRENT_BINARY_DIR}/parser.cc
COMPILE_FLAGS "--defines=\"${CMAKE_CURRENT_BINARY_DIR}/numgrammar.tab.hh\"")
You will see:
/usr/bin/bison --defines=\"/mnt/c/research/test folder/advgrammar/build/numgrammar.tab.hh\" -d -o ....
Now cmake added wrong escape mark for quotes.
Also single quotes don't help:
COMPILE_FLAGS "--defines='${CMAKE_CURRENT_BINARY_DIR}/numgrammar.tab.hh'")
yields:
/usr/bin/bison "--defines='/mnt/c/research/test" "folder/advgrammar/build/numgrammar.tab.hh'" ....
I suggest it may be a bug in FindBison module.
I want simply this:
/usr/bin/bison --defines="/mnt/c/research/test folder/advgrammar/build/numgrammar.tab.hh" -d -o ....
I asked on stackoverflow: https://stackoverflow.com/questions/71369325/cmake-incorrectly-escapes-bison-target-option and the only comment suggests to file a bug.
Edited by Konstantin