gpt4 book ai didi

c++ - 使用 CMake 生成 DLL 配置类型

转载 作者:行者123 更新时间:2023-12-01 14:25:13 31 4
gpt4 key购买 nike

我正在使用 CMake 生成我的 Visual Studio 解决方案。现在,CMake 生成两个配置 ReleaseDebug ,在单个项目下。两个配置都构建了一个 win32 (.exe) 应用程序。
这很好用,但我还想生成第三个配置,它会生成一个 DLL。我知道在 CMake 中我们可以使用 add_library(LibraryName SHARED [files])生成一个单独的项目来创建一个 DLL 目标,但这不是我想要的。相反,我想生成一个 DLL Visual Studio 中的配置,旁边 DebugRelease .
我可以通过添加 set(CMAKE_CONFIGURATION_TYPES Release Debug DLL) 来获取配置在 CMakeList 中,但我不确定如何实际配置它。我如何使这个自定义配置实际构建一个 DLL?如果可能,我还想自定义此配置的输出名称和目录,就像我如何使用 CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE 一样等等。
这可能吗?

最佳答案

而不是 add_library(LibraryName SHARED [files])您可以保留 add_library(LibraryName [files])没有 STATICSHARED然后你可以用 -DBUILD_SHARED_LIBS:BOOL=OFF 运行 CMake或 -DBUILD_SHARED_LIBS:BOOL=ON分别构建静态或共享库。
但这需要您运行 CMake 两次并编译两次。
要同时构建静态和共享,您可以在 CMakeLists.txt 中替换它:

add_library(LibraryName [files])
和:
add_library(LibraryName STATIC [files])
add_library(LibraryName_shared SHARED [files])
set_target_properties(LibraryName_shared PROPERTIES OUTPUT_NAME LibraryName)
您可能还需要使用 target_link_libraries 复制其他行(例如 install_shared )目标。
我经常使用这种方法为 CMakeLists.txt 的库一次性构建静态和共享库。不是为了这样做。
当您以这种方式添加单独的目标时,您还应该能够为其指定单独的输出名称和目录。

关于c++ - 使用 CMake 生成 DLL 配置类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62499301/

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