告诉cmake构建库的静态版本

问题描述 投票:0回答:1

让我们考虑CuteLogger CMakeLists.txt,它包含

ADD_LIBRARY(${library_target} SHARED ${sources} ${includes})

指示 cmake 构建共享版本(macOS 上的 .dylib)。我知道我可以将其更改为

ADD_LIBRARY(${library_target} STATIC ${sources} ${includes})

它将生成静态版本(macOS 上的 .a)。

即使 CMakeLists.txt ADD_LIBRARY 设置为 SHARED,我也可以告诉 cmake 构建静态版本(从命令行)吗?

我试过了

cmake .. -DBUILD_SHARED_LIBRARIES=False

但这似乎不起作用。

c++ cmake shared-libraries static-libraries
1个回答
-1
投票

您可以尝试将此

if/else
控制流程添加到您的
CMakeLists.txt

if (BUILD_SHARED_LIBRARIES)
   ADD_LIBRARY(${library_target} SHARED ${sources} ${includes})
else()
   ADD_LIBRARY(${library_target} STATIC ${sources} ${includes})
endif()

然后将

BUILD_SHARED_LIBRARIES
从命令行传递给 cmake:

cmake .. -DBUILD_SHARED_LIBRARIES=False
© www.soinside.com 2019 - 2024. All rights reserved.