使用 cmake 如何静态链接一些库和动态链接其他库?

Posted

技术标签:

【中文标题】使用 cmake 如何静态链接一些库和动态链接其他库?【英文标题】:with cmake how to link some libs statically and others dynamically? 【发布时间】:2013-06-18 16:52:02 【问题描述】:

如何告诉 CMake 静态链接一些库和动态链接其他库?

我想编译一个静态链接到所有依赖库的 C++ exe,除了 glic

谢谢

【问题讨论】:

【参考方案1】:

库的 CMake 方法是首先使用 find_library 找到它们,然后使用 target_link_libraries 中的结果。

find_library 调用期间选择使用静态库还是动态库:

如果您不介意使用哪个版本,请致电find_library(MYLIB mylib)

如果你想要一个静态库,使用find_library(MYLIB libmylib.a)(这是针对linux的,你会在windows等上搜索.lib)

如果你想要动态库,请使用find_library(MYLIB libmylib.so)

然后测试是否使用if (MYLIB) 找到您的库并将其链接到您的目标:target_link_libraries(mytarget $MYLIB)

【讨论】:

以上是关于使用 cmake 如何静态链接一些库和动态链接其他库?的主要内容,如果未能解决你的问题,请参考以下文章

动态链接库和静态链接库的区别

cmake 强制链接静态库

动态链接库和静态链接库

opencv静态链接库有啥用

Xcode生成静态库和bundle

关于动态库和静态库的问题。