在Linux(Ubuntu)上使用Cmake提升性能

7

这是我的CMakeLists.txt文件:

add_definitions(-std=c++11)
find_package(Boost 1.55.0 COMPONENTS filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(bst main.cpp)
target_link_libraries(bst ${Boost_LIBRARIES})

在我的build目录中执行cmake ..命令后,cmake成功生成了文件。
但是当我在build目录中运行make命令时,出现以下错误:
amin@aminux:~/Documents/boost_test/build$ make
Scanning dependencies of target bst
[100%] Building CXX object CMakeFiles/bst.dir/main.cpp.o
Linking CXX executable bst
/usr/bin/ld: CMakeFiles/bst.dir/main.cpp.o: undefined reference to    symbol '_ZN5boost6system15system_categoryEv'
//usr/lib/x86_64-linux-gnu/libboost_system.so.1.55.0: error   adding       symbols: DSO missing from command line
 collect2: error: ld returned 1 exit status
make[2]: *** [bst] Error 1
make[1]: *** [CMakeFiles/bst.dir/all] Error 2
make: *** [all] Error 2

在我的 main.cpp 源文件中,我只是调用了 boost::filesystem::is_directory 函数来测试 boost


2
添加系统组件 find_package(Boost 1.55.0 COMPONENTS filesystem system REQUIRED) - 这应该会有所帮助。 - Sergei Nikulov
谢谢,这对我有用。 - amin
1个回答

13

你还应该在 CMakeLists.txt 文件中添加 boost::system 库组件。

find_package(Boost 1.55.0 COMPONENTS filesystem system REQUIRED)


你值得更多的升职加薪,我的朋友! - Eraden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接