假设我们有个库需要链接,叫做 bar.so (没有 lib 前缀)。
如果 target_link_libraries(foo PRIVATE bar),cmake 会生成这样的命令 “-lbar”,即尝试寻找 libbar.so 或者 libbar.a,导致链接失败。
我们可以通过指定 namespec 来让 ld 知道不要给我们加上 lib 前缀和 so 后缀。
具体来说,就是在文件名前面加上冒号:
target_link_libraries(foo PRIVATE :bar.so)
这样 cmake 生成的命令就是 “-l:bar.so”,ld 就能正确找到库了。