我有一个在Linux上构建的共享库libtest.so。它链接到几个共享库。现在,我有一些第三方静态库可以链接到libtest.so。我知道可以通过直接调用gcc来实现:
Can I mix static and shared-object libraries when linking?
我的问题是如何使用CMake做同样的事情?
我没看到问题。使用静态库,您可以执行以下操作:
target_link_libraries(my_target_or_executable /home/me/somedir/mymagiclib.a)
或
target_link_libraries(my_target_or_executable -L/home/me/somedir/)
target_link_libraries(my_target_or_executable mymagiclib.a)
我昨天也以这种方式链接到共享库。因为我与地址清洗器发生冲突。
但是请注意,链接到共享库之间的区别。对于您的libtest.a
,您可以执行以下操作:
target_link_libraries(my_target_or_executable -ltest)
注意,您在此处删除了lib
前缀。但是当您要手动指定库时,请勿执行此操作。