gpt4 book ai didi

c++ - 在 cmake 中包含 cmake 头文件 boost.hpp

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:00 80 4
gpt4 key购买 nike

我喜欢添加 boost/operators.hpp用命令

来自 CMake 的 FindBoost 文档:

 find_package(Boost 1.36.0)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo foo.cc)
endif()

所以我加了

find_package(Boost 1.60.0)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})

add_library(core ${core_SRCS})
add_executable(app main.cpp)
target_link_libraries(app core)

endif ()

消息输出:

-- Boost version: 1.60.0
-- BOOST_ROOT=~/Projects/ClionProjects/.repo/boost_1_60_0
-- Boost_DIR=Boost_DIR-NOTFOUND
-- Boost_INCLUDE_DIR=/home/dornathal/Projects/ClionProjects/.repo/boost_1_60_0

无论它如何构建(我可以运行程序和测试),但只要我尝试包含 #include<boost/operators.hpp>它不会在测试项目中找到它。

我实际上通过 boost::operators<T> 扩展了一节课奇怪的是,我的 IDE (CLion) 让我跳转到那个源文件。

最佳答案

include_directories CMake 命令为当前目录及其子目录添加包含目录。由于您在测试项目中遇到错误并在主项目中使用 include_directories,我想问题是您有单独的目录,例如:

src/
CMakeLists.txt - include_directories used here
test/
test.cc - no effect on this file

如果是这种情况,您可以将 include_directories 移至它们共同的父目录或使用 target_include_directories可以传播公共(public) INCLUDE_DIRECTORIES 属性。

您还可以通过在 make 命令中添加 VERBOSE=1 来查看传递给编译器的命令:

make VERBOSE=1

这显示了哪些包含目录通过 -I... 选项传递给编译器。

关于c++ - 在 cmake 中包含 cmake 头文件 boost.hpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577736/

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