用脚本扩展CMake是好的做法吗?

时间:2018-07-31 11:20:23

标签: python cmake

我们围绕CMake运行了一些额外的命令,用于配置,构建,打包等。

例如在Windows上,构建命令如下所示:

mkdir build
cd build
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"

cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ..
msbuild synergy-core.sln /p:Platform="x64" /p:Configuration=%CMAKE_BUILD_TYPE% /m

在我们的CI系统上,有大约50个类似这样的命令块,可以用于各种平台和配置,因此,维护它们确实很繁琐。简化此过程并使其更通用的最佳方法是什么?有没有将这些命令移入源代码管理的良好实践方法?

例如包装脚本?以前,我为此目的实现了hm.py in Synergy,后来实现了removed,目的是将命令移至CI系统,但这使得在本地测试构建系统变得更加乏味。

1 个答案:

答案 0 :(得分:2)

不仅是完整的答案,而且是第一次尝试:

您可以将其压缩为两行。

cmake -H. -Bbuild -G "Visual Studio 14 2015 Win64"

运行配置步骤,然后

cmake --build build --target ALL_BUILD --config %CMAKE_BUILD_TYPE% -- /nologo /verbosity:minimal /maxcpucount

运行构建。 CMake的-B选项尚未正式记录,但会创建一个构建目录(以前可能不存在,AFAIK也可以为其提供绝对路径)。

配置后,CMakes构建工具模式非常方便。它选择本机生成工具(MSBuild for Visual Studio项目),然后为给定的目标/配置组合运行该工具。目标可以是INSTALL, ALL_BUILD, RUN_TESTS,...不需要通过调用vcvarsall.bat来手动设置环境变量,如果CMake安装在构建计算机上,则CMake通过显式给定的-G选项查找编译器本身。

关于-H选项,另请参见this问题。