CMake将子目录库构建为静态库
采用以下项目结构CMake将子目录库构建为静态库,cmake,shared-libraries,static-libraries,Cmake,Shared Libraries,Static Libraries,采用以下项目结构 CMakeLists.txt libs\CMakeLists.txt 我有以下用例: CMakeLists.txt描述了MyLib库的构建过程。这个 libs\CMakeLists.txt描述MyLib使用的库的构建过程。它由带有add_子目录()的主项目使用 我可以控制MyLib是共享库还是静态库,包括: cmake -DBUILD_SHARED=TRUE|FALSE MyLib使用的所有lib都应该静态链接(MyLib应该是一个“独立”库)。但我不想在libs\CMak
CMakeLists.txt
libs\CMakeLists.txt
我有以下用例:
CMakeLists.txt描述了MyLib库的构建过程。这个
libs\CMakeLists.txt描述MyLib使用的库的构建过程。它由带有add_子目录()的主项目使用
我可以控制MyLib是共享库还是静态库,包括:
cmake -DBUILD_SHARED=TRUE|FALSE
MyLib使用的所有lib都应该静态链接(MyLib应该是一个“独立”库)。但我不想在libs\CMakeLists.txt中显式地将它们设置为静态
using add_library(... STATIC ...)
因为它们可以作为共享项目在其他项目中使用
我可以控制如何生成我的add_子目录(项目)吗?您可以使用一个选项:
option(MYLIB_BUILD_STATIC "Build libraries as static libraries" ON)
# add/create library
if (MYLIB_BUILD_STATIC)
add_definitions(-DMYLIB_STATIC_BUILD)
add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES})
else (MYLIB_BUILD_STATIC)
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})
endif (MYLIB_BUILD_STATIC)
没错。此外,通过动态更改和恢复BUILD_SHARED_LIBS,您可以在不引入新变量的情况下解决此问题。