我想用 CMake 生成和编译 Visual Studio 项目我需要从构建中排除单元测试文件。有没有办法做到这一点?

Posted

技术标签:

【中文标题】我想用 CMake 生成和编译 Visual Studio 项目我需要从构建中排除单元测试文件。有没有办法做到这一点?【英文标题】:I want to generate & compile Visual Studio projet with CMake I need to exclude unit testing files from the build. Is there a way to dothis? 【发布时间】:2019-07-04 13:39:18 【问题描述】:

我的项目包含我想从编译过程中排除的单元测试文件。我想用 CMake 修改 .vcxproj Visual Studio 文件。我的问题有哪些可能的解决方案?

set_source_files_properties(BankTestCase_1.h PROPERTIES VS_DEPLOYEMENT_CONTENT 0)

set_source_files_properties(BankTestCase_1.h PROPERTIES EXCLUDE_FROM_BUILD 1)

【问题讨论】:

【参考方案1】:

首先,您不要修改.vcxproj 文件。 CMake 生成一个。每次调用 cmake 时,都会生成一个新的项目文件。您必须正确生成它。


CMake 已经定义了一个函数来添加测试。它叫add_test

它通过指定名称然后是命令或可执行目标来工作:

add_executable(my_test_exe testsrc1.cpp testsrc2.cpp)
add_test(NAME MyTest COMMAND my_test_exe)

如果您还不想编译主项目中的测试文件,只需不要将它们添加到您的主目标中:

add_executable(main_project
    src1.cpp
    src2.cpp
    src3.cpp
    src4.cpp
    # srctest1.cpp # not added
    # srctest2.cpp # not added too.
)

另外,我注意到您想从编译中删除头文件。头文件根本不应该被编译。您不应该将它们添加到您的目标中。


如果您使用 glob 添加所有源文件,那么您可以随时将其从 glob 列表中删除:

list(REMOVE_ITEM globbed_files file/to/be_excluded.cpp)

【讨论】:

以上是关于我想用 CMake 生成和编译 Visual Studio 项目我需要从构建中排除单元测试文件。有没有办法做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章

加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目

加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目

与 CMake 和 Visual Studio 2010 的链接错误

cmake basic

使用 CMake 和 Visual Studio 2019 编译 GLEW?

visual studio 编译器的堆空间不足问题的解决(cmake版本)