簡體   English   中英

不要調用FLEX / BISON

[英]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_targetflex_target宏(我通過弄亂它們添加隨機值來測試它:CMake生氣並且引發了我的錯誤)。

關於發生了什么以及我錯過了什么的任何線索?

add_library ,添加BISON_Parser_OUTPUTSFLEX_Lexer_OUTPUTS依賴項。 相反,它應該分別是BISON_XPathParser_OUTPUTSFLEX_XPathScanner_OUTPUTS (因為你給了他們這樣的名字)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM