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



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

例如,构建命令在Windows:上是这样的

mkdir build
cd build
call "C:Program Files (x86)Microsoft Visual Studio 14.0VCvcvarsall.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个这样的命令块,因此维护它们真的很麻烦。什么是简化并使其更通用的最佳方法?有没有一种很好的方法可以将这些命令转移到源代码管理中?

例如包装脚本?以前,我在Synergy中为此实现了hm.py,后来为了将命令移动到CI系统而将其删除,但这使得在本地测试构建系统变得更加乏味。

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

你可以把它浓缩成两行。

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构建工具模式非常方便。它选择本机生成工具(用于Visual Studio项目的MSBuild(,并为给定的目标/config组合运行该工具。目标可以是INSTALL, ALL_BUILD, RUN_TESTS。。。不需要通过调用vcvarsall.bat手动设置环境变量,如果编译器安装在构建机器上,CMake会通过显式给定的-G选项找到编译器本身。

有关-H选项,请参阅此问题。

相关内容

最新更新