cmake 同时生成动态库和静态库

4 篇文章 0 订阅

ADD_LIBRARY(add_static STATIC add.cpp)

SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME  "add")

SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)

ADD_LIBRARY(add_static STATIC add.cpp)

SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME  "add")

SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)

:cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库, 因此,在构建libhello.a时,就会清理掉libhello.so,为了回避这个问题,设置CLEAN_DIRECT_OUTPUT属性为1,就不会清理了。

CMake中,你可以使用add_library命令来设置生成动态库静态库。add_library命令用于创建一个新的库目标,并指定库的类型。 要生成动态库,可以将add_library命令的第一个参数设置为库的名称,然后将第二个参数设置为SHARED。例如: ```cmake add_library(mylib SHARED source1.cpp source2.cpp) ``` 上面的例子中,我们创建了一个名为mylib的动态库目标,并将源文件source1.cpp和source2.cpp添加到该目标中。生成动态库文件将具有与平台相关的扩展名(如.so、.dll或.dylib)。 要生成静态库,可以将add_library命令的第一个参数设置为库的名称,然后将第二个参数设置为STATIC。例如: ```cmake add_library(mylib STATIC source1.cpp source2.cpp) ``` 上面的例子中,我们创建了一个名为mylib的静态库目标,并将源文件source1.cpp和source2.cpp添加到该目标中。生成静态库文件将具有与平台相关的扩展名(如.a、.lib或.a)。 默认情况下,CMake将根据操作系统和构建配置(如Release或Debug)来决定使用动态库还是静态库。但你也可以使用set_target_properties命令来显式地指定目标生成的库类型。例如: ```cmake set_target_properties(mylib PROPERTIES LINKER_LANGUAGE CXX) ``` 上面的例子中,我们将目标mylib的链接器语言设置为C++,这将影响生成的库的类型。 总之,通过在add_library命令中使用SHARED或STATIC作为第二个参数,可以设置生成动态库静态库。你也可以使用set_target_properties命令来显式指定库的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值