我決定在我的項目中包含一個庫(更具體地說是yaml-cpp)。由於這兩個項目(yaml-cpp和mine)都使用CMAKE進行構建,因此我決定嘗試將yaml-cpp目錄放入根目錄中,並使用add_subdirectory(yaml-cpp)
和target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp)
,因爲yaml-cpp的CMakeLists.txt已包含CMake:include_directories不從子目錄傳播
include_directories(${YAML_CPP_SOURCE_DIR}/include)
# ...
add_library(yaml-cpp
${sources}
${public_headers}
${private_headers}
${contrib_sources}
${contrib_public_headers}
${contrib_private_headers}
)
...我應該在包含和圖書館目標上都很好。但事實證明,在編譯時我收到以下錯誤:
P:\zpp\TheGameShow\TGS.cpp(16): fatal error C1083: Cannot open include file: 'yaml-cpp/yaml.h': No such file or directory
...除非我重複行include_directories(${YAML_CPP_SOURCE_DIR}/include)
在我自己的CMakeLists.txt
我的問題是:是否有所需的行爲? include目錄不應該從子目錄傳播到根目錄嗎?難道我做錯了什麼?
編輯:我使用Visual Studio 2010和CMake的2.8.6
創建)這是一個糟糕的設計,我認爲應該有一個明確的方法將它傳播到更高的層次。 – Lothar 2016-02-21 01:56:43