【发布时间】:2016-05-31 07:03:35
【问题描述】:
我有一个依赖于另一个库 irRNG 的库 irWGN。
我的 CMakeFiles.txt 如下。一个是src/signals是
add_library(irRNG irRNG.cpp)
add_library(irWGN irWGN.cpp)
和主要的 CMakeFile
include_directories(${SRC}/signals)
SET(MY_LIB
${MY_LIB}
irRNG
irWGN
)
....
foreach(file2link ${FILES_to_RUN})
target_link_libraries(${file2link}
${catkin_LIBRARIES}
${Boost_LIBRARIES}
${gsl_LIBRARIES}
${OpenCV_LIBRARIES}
${MY_LIB}
)
add_dependencies(${file2link} project_generate_messages_cpp)
endforeach(file2link)
遇到这个错误
./devel/lib/libirWGN.so: undefined reference to `irRNG::irRNG()'
../devel/lib/libirWGN.so: undefined reference to `irRNG::~irRNG()'
奇怪的是我在 ubuntu 12.04 上使用它没有任何问题。现在才出现这个问题。
【问题讨论】:
-
你还记得
target_link_libraries()吗? -
错误消息涉及库
irWGN,但您仅显示库irRNG的创建。如果不查看相关代码,我们将无法为您提供帮助。 -
@polar 您还需要报告 cmake irWGN 相关代码。我指出的丢失的“.cpp”呢?
-
在
set(MYLIB...中交换irRNG和irWGN如果不起作用,请报告完整的失败行,make VERBOSE=1如果你使用make -
@polar 是的。如今,如果你做得正确(首先依赖库,之后依赖库),你将不需要重复库。不是你的情况,但是cmake也可以处理circular dependencies。
标签: c++ compiler-errors linker cmake undefined