[英]CMake not invoking FLEX/BISON
我有以下CMake文件,它是一個更大的項目的一部分(在其文件夾中,並使用add_subdirectory(...)
由上層導入
find_package(BISON REQUIRED)
find_package(FLEX REQUIRED)
include_directories(${PROJECT_SOURCE_DIR}/include/Parser)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
bison_target(XPathParser
XPath.yy
${CMAKE_CURRENT_BINARY_DIR}/XPathParser.cpp
DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/XPathParser.h)
flex_target(XPathScanner
XPath.flex
${CMAKE_CURRENT_BINARY_DIR}/XPathScanner.cpp
COMPILE_FLAGS "-Cm -B -L --c++ --nounistd")
add_flex_bison_dependency(XPathScanner XPathParser)
set_source_files_properties(${BISON_XPathParser_OUTPUTS}
${FLEX_XPathScanner_OUTPUTS}
PROPERTIES
COMPILE_FLAGS -Wno-sign-compare
COMPILE_FLAGS -Wno-effc++)
add_library(xpath OBJECT
${BISON_Parser_OUTPUTS}
${FLEX_Lexer_OUTPUTS}
${CMAKE_CURRENT_LIST_DIR}/XPathParserDriver.cpp)
據我所知,這個CMake應該執行FLEX和BISON,然后在實際的C ++編譯器調用之前生成C ++文件。
出於某種原因,超出我的理解,這是不正確的。 我試圖清除CMake緩存並從頭開始重新運行; 仍然,CMake生成的文件中沒有FLEX或BISON的跡象。
當然,CMake找到FLEX和BISON並正確設置bison_target
和flex_target
宏(我通過弄亂它們添加隨機值來測試它:CMake生氣並且引發了我的錯誤)。
關於發生了什么以及我錯過了什么的任何線索?
在add_library
,添加BISON_Parser_OUTPUTS
和FLEX_Lexer_OUTPUTS
依賴項。 相反,它應該分別是BISON_XPathParser_OUTPUTS
和FLEX_XPathScanner_OUTPUTS
(因為你給了他們這樣的名字)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.