Flex/Bison 目标不存在

Lan*_*nbo 5 cmake

我的项目中有一个子目录结构,其中有两个 cmake 文件。其中之一应该是一个编译器,使用flex和bison,但是cmake给了我一个我不太明白的错误:

\n\n
cmake_minimum_required(VERSION 2.8)\n\nproject(leaf)\n\nadd_subdirectory(leafc)\n
Run Code Online (Sandbox Code Playgroud)\n\n

并在目录中leafc

\n\n
find_package(BISON)\nfind_package(FLEX)\n\nBISON_TARGET(LeafParser ${CMAKE_CURRENT_SOURCE_DIR}/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)\nFLEX_TARGET(LeafScanner ${CMAKE_CURRENT_SOURCE_DIR}/lexer.l  ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cpp)\nADD_FLEX_BISON_DEPENDENCY(LeafParser LeafScanner)\n\ninclude_directories(${CMAKE_CURRENT_BINARY_DIR})\nadd_executable(leafc main.cpp ${BISON_LeafParser_OUTPUTS} ${FLEX_LeafScanner_OUTPUTS})\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我在尝试时收到此错误cmake .

\n\n
CMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:132 (MESSAGE):\n  Flex target `LeafParser' does not exists.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\nCMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:136 (MESSAGE):\n  Bison target `LeafScanner' does not exists.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\nCMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:139 (SET_SOURCE_FILES_PROPERTIES):\n  set_source_files_properties called with incorrect number of arguments.\nCall Stack (most recent call first):\n  leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY)\n\n-- Configuring incomplete, errors occurred!\n
Run Code Online (Sandbox Code Playgroud)\n\n

文件在那里:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 leafc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lexer.l\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 parser.y\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 README\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么我做错了什么?

\n

sak*_*kra 4

看来你只是把论点搞混ADD_FLEX_BISON_DEPENDENCY了。尝试:

ADD_FLEX_BISON_DEPENDENCY(LeafScanner LeafParser)
Run Code Online (Sandbox Code Playgroud)

此外,您的通话中存在拼写错误FLEX_TARGET(CMAKE_CURRENT_BIANRY_DIR