我要导入三个静态库(A.a,B.a,C.a),其中C依赖于A和B,B依赖于A。在我的程序中,我使用C中的函数。
(Ubuntu 16.04和CMake 3.5.1)在我的cmake文件中,我使用target_link_libraries()将A.a,B.a,C.a链接到我的可执行文件。但是,编译时会显示“对funcA()的未定义引用”,其中funA是C.a中的未定义符号(用nm命令显示),该功能实际上在A.a中定义为文本符号。
target_link_libraries(myExec A.a B.a C.a)
我希望看到没有这些未定义符号的正确链接静态库。
更新 正如Mike在评论中提到的:
库必须在链接序列中出现在它依赖的库之前
因此
target_link_libraries(myExec C.a B.a A.a)
是正确的顺序