我有一个图书馆irWGN依赖于另一个图书馆irRNG。
我的CMakeFiles.txt&#39>如下。一个是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上使用它没有任何问题。只是现在才出现这个问题。
答案 0 :(得分:1)
由于问题在于你的irWGN取决于你的irRNG,解决你的问题最优雅的方法是添加:
grep -q 123 fileName && grep -q ABC fileName && echo "Matched" || echo "not matched"
Matched
grep -q 123 fileName && grep -q ABQQC fileName && echo "Matched" || echo "not matched"
not matched
grep -q 1ZZ23 fileName && grep -q ABC fileName && echo "Matched" || echo "not matched"
not matched
grep -q 1ZZ23 fileName && grep -q ABCQQ fileName && echo "Matched" || echo "not matched"
not matched
在库之间创建相互依赖关系。它也适用于静态库!因此,如果您尝试将可执行文件链接到irWGN,则cmake将自动链接到irRNG,并且顺序正确。