CMake 根据配置从生成中排除文件
CMake exclude file from build according to configuration
我正在将现有的C++项目迁移到CMake。 在此项目中,某些源文件仅在发布模式下在Visual Studio 常规配置属性中标记为Excluded from Build
。
我试图找到一种方法来用我的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
包装我的"在发布模式下排除我"文件的内容,但我实际上正在寻找任何不会让我修改原始项目中的源文件的解决方案。
我使用 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 生成和编译 Visual Studio projet,我需要从构建中排除单元测试文件。有没有办法做到这一点?
- 从 Eclipse 索引中排除构建中包含的文件
- 从 Visual Studio 2017 中生成的依赖项中排除头文件
- 从VSCODE C 调试步骤中排除文件
- CMake 根据配置从生成中排除文件
- 修改 gettext .pot 文件输出以排除空字符串或仅包含空格的字符串
- Eclipse C 在构建配置中排除头文件
- 从文件夹中排除 cpp 而不删除
- 从eclipse自动生成的依赖项中排除文件夹
- 如何取回从 Eclipse CDT 中的构建配置中排除的文件
- 是否应从头文件声明中排除辅助函数?(C++)
- 如何排除 cppclean 运行的文件
- 使用生成文件在编译中排除源文件
- Visual Studio 2010-排除文件类型
- Eclipse c++如何从构建中重新包含被排除的文件
- Readdir排除目录中的某些文件
- 从构建中排除文件(自定义和临时)
- Visual Studio - 如何从 C++ 核心指南检查器检查路径中排除文件夹