2011-12-02 3 views
4

두 개의 cmake 파일을 가지고있는 프로젝트에 서브 디렉토리 구조가 있습니다. 그 중 하나는 flex와 들소를 사용하여 컴파일해야하지만, cmake 내가 확실히 이해하지 못하는 나에게 오류를 제공합니다플렉스/들소 타겟이 존재하지 않습니다.

cmake_minimum_required(VERSION 2.8) 

project(leaf) 

add_subdirectory(leafc) 

및 디렉토리 leafc의 :

find_package(BISON) 
find_package(FLEX) 

BISON_TARGET(LeafParser ${CMAKE_CURRENT_SOURCE_DIR}/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) 
FLEX_TARGET(LeafScanner ${CMAKE_CURRENT_SOURCE_DIR}/lexer.l ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cpp) 
ADD_FLEX_BISON_DEPENDENCY(LeafParser LeafScanner) 

include_directories(${CMAKE_CURRENT_BINARY_DIR}) 
add_executable(leafc main.cpp ${BISON_LeafParser_OUTPUTS} ${FLEX_LeafScanner_OUTPUTS}) 

하지만이 얻을 cmake .

CMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:132 (MESSAGE): 
    Flex target `LeafParser' does not exists. 
Call Stack (most recent call first): 
    leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY) 

CMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:136 (MESSAGE): 
    Bison target `LeafScanner' does not exists. 
Call Stack (most recent call first): 
    leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY) 

CMake Error at /usr/share/cmake-2.8/Modules/FindFLEX.cmake:139 (SET_SOURCE_FILES_PROPERTIES): 
    set_source_files_properties called with incorrect number of arguments. 
Call Stack (most recent call first): 
    leafc/CMakeLists.txt:6 (ADD_FLEX_BISON_DEPENDENCY) 

-- Configuring incomplete, errors occurred! 

하려고 할 때 파일이 오류가 :

├── CMakeLists.txt 
├── leafc 
│   ├── CMakeLists.txt 
│   ├── lexer.l 
│   ├── main.cpp 
│   └── parser.y 
└── README 

그래서 내가 뭘 잘못 했니?

답변

4

ADD_FLEX_BISON_DEPENDENCY에 대한 인수가 방금 섞여있는 것처럼 보입니다. 시도 :

ADD_FLEX_BISON_DEPENDENCY(LeafScanner LeafParser) 

은 또한 당신의 FLEX_TARGET 호출에 오타가 (CMAKE_CURRENT_ BIANRY _DIR).

+0

감사합니다. 이제 make에서 오류가 발생하지만 make '2': *** 'parser.hpp'라는 대상을 만들 규칙이 없습니다. 'leafc/CMakeFiles/leafc.dir/lexer.cpp .영형'. 그만. 어떤 생각? – Lanbo

+0

아마도 오타가 원인 일 수 있습니다. 업데이트 된 답변보기 – sakra

관련 문제