使用cmake

时间:2016-01-03 14:40:25

标签: c++ boost cmake

我想添加boost/operators.hpp和cmake

来自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)让我跳转到那个源文件。

1 个答案:

答案 0 :(得分:0)

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

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

如果是这种情况,您可以将include_directories移至其公共父目录,也可以使用可传播公共INCLUDE_DIRECTORIES属性的target_include_directories

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

make VERBOSE=1

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