gpt4 book ai didi

CMake 将子目录库构建为静态库

转载 作者:行者123 更新时间:2023-12-05 03:13:11 25 4
gpt4 key购买 nike

具有以下项目结构

CMakeLists.txt
libs\CMakeLists.txt

我有以下用例:CMakeLists.txt 描述了 MyLib 库的构建过程。这libs\CMakeLists.txt 描述了 MyLib 使用的库的构建过程。它由主项目使用 add_subdirectory()。

我可以控制 MyLib 是共享库还是静态库:

cmake -DBUILD_SHARED=TRUE|FALSE

MyLib 使用的所有库都应该静态链接(MyLib 应该是“独立”库)。但我不想在 libs\CMakeLists.txt 中将它们显式设为静态

using add_library(... STATIC ...)

因为它们可以作为共享项目在其他项目中使用。

我可以控制我的 add_subdirectory(project) 的构建方式吗?

最佳答案

您可以使用一个选项:

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)

关于CMake 将子目录库构建为静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com