从构建中排除文件(自定义和临时)
Files exclusion (custom and transient) from build
我的Visual Studio
解决方案中有许多c++ (Google Test
)源文件,我希望有可能只保留一些用于构建(专注于问题),但也要足够快(一天两次)回到初始配置。
我们正在使用,或多或少,大约三种解决方案:Visual Studio
, CMake
和QT
(但我可以添加另一个)。我从未使用过QT
,所以我看到的其他两个解决方案是:
-
Visual Studio
:文件夹是无用的,但我可以选择文件并从构建中排除它们。但是这些更改保存在vcproj中,所以我必须注意不要将它们保存在版本控制上,这很烦人。 -
CMake
:很容易改变CMakeLists.txt
(注释行与源文件夹),但我总是有版本控制问题…也许我可以在自定义(用户)文件中配置排除的文件。优点:我可以只生成我想要的东西,更灵活,不像以前那样无聊。
例如,如果我不想要src_2中的源:
file(GLOB_RECURSE SRC_FILES_1
${SOURCE_BASE_DIR}/src_1/*.cpp
${SOURCE_BASE_DIR}/src_1/*.h
)
file(GLOB_RECURSE SRC_FILES_2
${SOURCE_BASE_DIR}/src_2/*.cpp
${SOURCE_BASE_DIR}/src_2/*.h
)
file(GLOB_RECURSE SRC_FILES_3
${SOURCE_BASE_DIR}/src_3/*.cpp
${SOURCE_BASE_DIR}/src_3/*.h
)
add_executable(${PROJECT_TEST_NAME}
${SRC_FILES_1}
# next line is commented
# ${SRC_FILES_2}
${SRC_FILES_3}
)
是否有其他解决方案或方法来改进这里提出的其中一个?
你可以用cmake变量来控制它。
option(BUILD_TESTS "builds test cpp files" ON)
为你的cmake文件添加一个选项。在这种情况下默认为ON,但您可以更改它。现在我们开始吧:
if(BUILD_TESTS)
set(TEST_CPP_FILES test1.cpp test2.cpp)
endif(BUILD_TESTS)
add_executabe(foo bar.cpp bar1.cpp $(TEST_CPP_FILES))
在这里,您用测试的源文件(或者当BUILD_TESTS
是ON
时您想要构建的任何源文件)定义了一个变量。然后将它们添加到目标中。如果BUILD_TESTS
关闭,这个变量将为空。
现在要更改值,可以运行
cmake <...> -DBUILD_TESTS=OFF
或ON
,如果你想再次打开它们。您还可以将更改保留在版本控制中,因为它将默认为ON
,您需要显式禁用它。
如果你不只是想要排除源文件,你也可以在if语句中使用this来排除整个子目录或目标。
编辑:对于您的示例,它可能看起来像这样:
if(BUILD_TESTS)
file(GLOB_RECURSE SRC_FILES_2
${SOURCE_BASE_DIR}/src_2/*.cpp
${SOURCE_BASE_DIR}/src_2/*.h
)
endif(BUILD_TESTS)
之后 SRC_FILES_2
应该为空。
相关文章:
- Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
- 用于自定义调试构建的 CMake qt 输入库后缀
- 自定义构建文件更改不会触发VS 2017中的项目重建
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- 如何使用C++将MXNET自定义运算符构建到单独的库/包中?
- 有没有办法构建C++自定义限定符?
- 在多个目标上 CMake 后期构建自定义命令?
- 使用 QtCreator 部署自定义构建的项目
- 使用自定义GCC位置构建软件包
- 自定义 Python 构建 - time.so:未定义的符号:PyExc_ValueError
- 预处理之后和使用CMake编译之前的自定义构建步骤
- 针对自定义构建的tcl85.lib的链接器错误,适用于ActiveState发行版的tcl85.lib
- 测试和自定义构建目录的组合
- 如何使用生成 .cpp 和 .h 文件的自定义构建器
- 如何使Sublime Text自动选择自定义构建系统
- 如何在Qt Creator项目向导中添加自定义构建步骤
- 从自定义构建的Python导入自定义模块失败
- 附加自定义构建目录.targets文件
- 用于生成.h文件的VS2010自定义构建工具
- Visual Studio 2010:在单个文件上运行自定义构建工具时指定工作目录