gpt4 book ai didi

c++ - CMake:include_directories 不从子目录传播

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:54 27 4
gpt4 key购买 nike

我决定在我的项目中包含一个库(更具体地说是 yaml-cpp )。由于这两个项目(yaml-cpp 和我的)都使用 CMAKE 进行构建,我决定尝试将 yaml-cpp 目录放在我的根目录中,只使用 add_subdirectory(yaml-cpp)target_link_libraries(${EXECUTABLE_NAME} foolib yaml-cpp),因为yaml-cpp的CMakeLists.txt已经包含了

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

...除非我在自己的 CMakeLists.txt 中复制行 include_directories(${YAML_CPP_SOURCE_DIR}/include)

我的问题是:这是期望的行为吗?包含目录不应该从子目录传播到根目录吗?我做错了什么吗?

编辑:我正在使用 Visual Studio 2010 和 CMake 2.8.6

最佳答案

是的,这是期望的行为。没有任何内容被传播到更高级别的 CMakeLists.txt。唯一的异常(exception) - 缓存值(由各种 find_* 和 set(VAR 123 CACHE STRING)set(VAR 123 PARENT_SCOPE) 创建。

关于c++ - CMake:include_directories 不从子目录传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com