gpt4 book ai didi

c++ - CMake 根据配置从构建中排除文件

转载 作者:行者123 更新时间:2023-11-28 01:43:36 31 4
gpt4 key购买 nike

我正在将现有的 C++ 项目迁移到 CMake。在此项目中,某些源文件在 Visual Studio 常规配置属性中标记为Excluded from Build only in Release mode

我尝试找到一种方法来使用我的 CMakeLists.txt 重现此行为。到目前为止,我已经尝试将 target_sources() 与生成器表达式一起使用:

set(_srcs Doctor.cpp Clara.cpp)
set(_headers Doctor.hpp Clara.hpp)

add_library(Tardis SHARED ${_srcs} ${_headers})

target_sources(Tardis PRIVATE $<$<CONFIG:Debug>:Dalek.cpp>)

但我在生成步骤中以 CMake 错误结束:

Target "Tardis" has source files which vary by configuration.  This is not supported by the "Visual Studio 14 2015 Win64" generator.

我仍然可以用一个大的 #ifdef _DEBUG 包装我的 exclude-me-in-release-mode 文件的内容,但我实际上正在寻找任何解决方案不会让我修改原始项目的源文件。

我使用 CMake 3.8,最低要求是 3.7。

祝你有美好的一天!

最佳答案

您可以为有条件包含的源创建单独的静态库。然后可以通过 target_link_libraries 根据配置链接库。命令,例如:

add_library(TardisDebugOnlyHelper STATIC ${_debug_only_srcs} ${_debug_only_headers})
add_library(Tardis SHARED ${_srcs} ${_headers})
target_link_libraries(Tardis debug TardisDebugOnlyHelper)

(免责声明:我还没有测试过)

关于c++ - CMake 根据配置从构建中排除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102317/

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