让我们考虑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
但这似乎不起作用。
您可以尝试将此
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