简体   繁体   中英

CMake: include_directories not propagating from subdirectory

I decided to include a library (more specifically yaml-cpp ) in my project. Since both the projects (yaml-cpp and mine) are using CMAKE for building I decided to try and place the yaml-cpp directory inside my root directory and just use add_subdirectory(yaml-cpp) and target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp) , since yaml-cpp's CMakeLists.txt already contains

include_directories(${YAML_CPP_SOURCE_DIR}/include)

# ...

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

...and I should be fine on both includes and the library target. But as it turns out, upon compilation I get the following error:

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

...unless I duplicate the line include_directories(${YAML_CPP_SOURCE_DIR}/include) in my own CMakeLists.txt

My question is: Is it the desired behavior? Shouldn't the include directories propagate from subdirectories to root directories? Am I doing something wrong?

edit: I am using Visual Studio 2010 and CMake 2.8.6

Yes, it's desired behavior. Nothing is being propagated to the higher-level CMakeLists.txt. The only exception - cache values (created by various find_* and set(VAR 123 CACHE STRING) and set(VAR 123 PARENT_SCOPE) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM