如何使用 CMake 混合链接静态库和共享库
How to mix linking both static and shared libraries with CMake
我有一个基于 Linux 的共享库 libtest.so。它 links 到几个共享库。现在我有一些第三方静态库 link 到 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)
昨天我什至通过这种方式链接到共享库。因为我在来自多个来源的 gcc 地址消毒程序库中发生冲突。
但是请注意链接到库的不同之处,这是正常的方式。对于您的 libtest.a
,您可以这样做:
target_link_libraries(my_target_or_executable -ltest)
请注意,您在此处删除了 lib
前缀。但是当你想手动指定库时不要这样做。
我有一个基于 Linux 的共享库 libtest.so。它 links 到几个共享库。现在我有一些第三方静态库 link 到 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)
昨天我什至通过这种方式链接到共享库。因为我在来自多个来源的 gcc 地址消毒程序库中发生冲突。
但是请注意链接到库的不同之处,这是正常的方式。对于您的 libtest.a
,您可以这样做:
target_link_libraries(my_target_or_executable -ltest)
请注意,您在此处删除了 lib
前缀。但是当你想手动指定库时不要这样做。