CMake-单个库的BUILD_SHARED_LIBS

时间:2018-11-27 12:25:56

标签: cmake

是否存在像BUILD_SHARED_LIBS这样的变量,但仅适用于单个目标(例如MyLib_BUILD_SHARED,其中MyLib是库)。

我知道我可以使用命令STATIC中的DYNAMICadd_library来手动确定库是静态的还是动态的,但是我希望用户可以设置一个选项而不是硬编码的解决方案。

此致, 莱克斯(Lehks)

2 个答案:

答案 0 :(得分:1)

我不知道CMake中没有内置方法。使其成为一个选项,其优点是还可以记录用户的意图。

option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" ON)

然后根据设置的选项执行add_library命令。

答案 1 :(得分:0)

我相信接受的答案并不完全准确,因为问题专门针对为单个目标设置此选项。通过将BUILD_SHARED_LIBS作为可见选项,您可以默认控制所有库目标的STATIC / SHARED属性。

的确,没有针对单个目标执行此操作的内置功能。您需要自己添加。类似于以下内容:

option(MyLib_SHARED_LIBS "" ON)
if (MyLib_SHARED_LIBS)
   add_library(MyLib SHARED "")
else()
   add_library(MyLib STATIC "")
endif()