【发布时间】:2014-04-29 05:15:50
【问题描述】:
我将 cmake 用于带有 boost 的项目,我已经根据需要设置了 boost-signals 并且 cmake 声明它找到了它,但是当我编译项目时出现链接错误。
我可以使用链接器指令集(CMAKE_EXE_LINKER_FLAGS -lboost_signals)解决它,但是 这似乎与它应该做的相反。有人可以提出更好的方法吗?谢谢
在 CMakeLists.txt 中
IF(UNIX)
find_package(Boost COMPONENTS system filesystem random regex signals thread program_options date_time REQUIRED)
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} )
ENDIF()
运行 cmake:
$ cmake ../
-- Boost version: 1.49.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- random
-- regex
-- signals
-- thread
-- program_options
-- date_time
-- Configuring done
-- Generating done
-- Build files have been written to: /home/me/myproject/build
链接器错误:
/usr/bin/ld: /usr/local/lib/libwt.so: undefined reference to symbol '_ZN5boost7signals9trackableD2Ev'
/usr/bin/ld: note: '_ZN5boost7signals9trackableD2Ev' is defined in DSO /usr/lib/libboost_signals.so.1.49.0 so try adding it to the linker command line
/usr/lib/libboost_signals.so.1.49.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
【问题讨论】:
-
你能告诉我们整个链接器命令行吗?我想知道你是否添加了 -lboost_signals。