2012-01-06 8 views
4

내 프로젝트에 라이브러리 (특히 yaml-cpp)를 포함하기로 결정했습니다. 건물에 대한 CMAKE를 사용하는 두 프로젝트 (YAML-CPP 및 광산) 때문에 나는 시도하고 내 루트 디렉토리 내부의 YAML-CPP 디렉토리를 배치하고 YAML-CPP의 CMakeLists.txt 이미CMake : 서브 디렉토리에서 include_directories가 전파되지 않음

를 포함하고 있기 때문에 단지 add_subdirectory(yaml-cpp)target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp)를 사용하기로 결정
include_directories(${YAML_CPP_SOURCE_DIR}/include) 

# ... 

add_library(yaml-cpp 
    ${sources} 
    ${public_headers} 
    ${private_headers} 
    ${contrib_sources} 
    ${contrib_public_headers} 
    ${contrib_private_headers} 
) 

... 포함 및 라이브러리 대상 모두에서 잘되어야합니다. 나는 내 자신의 CMakeLists.txt에 선 include_directories(${YAML_CPP_SOURCE_DIR}/include)을 복제하지 않는 한

내 질문은 ...

P:\zpp\TheGameShow\TGS.cpp(16): fatal error C1083: Cannot open include file: 'yaml-cpp/yaml.h': No such file or directory

:하지만 나는 다음과 같은 오류가 컴파일에 밝혀으로 원하는 행동인가? include 디렉토리가 하위 디렉토리에서 루트 디렉토리로 전파되면 안됩니까? 내가 뭔가 잘못하고 있는거야?

편집 : 나는 비주얼 스튜디오 2010을 사용하고 CMake 2.8.6

답변

5

예, 원하는의 행동입니다. 아무것도 상위 수준의 CMakeLists.txt로 전파되지 않습니다. 유일한 예외 - 다양한 find_ * 및 set(VAR 123 CACHE STRING)set(VAR 123 PARENT_SCOPE)에 의해 생성 된

+2

에 의해 생성 된 캐시 값 그리고 잘못된 설계입니다. 상위 수준으로 전달하는 명시적인 방법이 있어야한다고 생각합니다. – Lothar

관련 문제