【问题标题】:Is it good practice to extend CMake with scripting?使用脚本扩展 CMake 是一种好习惯吗?
【发布时间】:2018-07-31 11:20:22
【问题描述】:

我们围绕 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 系统,但这使得在本地测试构建系统更加繁琐。

【问题讨论】:

标签: python cmake


【解决方案1】:

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

您可以将其压缩为两行。

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)并针对给定的目标/配置组合运行该工具。目标可以是INSTALL, ALL_BUILD, RUN_TESTS, ... 无需通过调用vcvarsall.bat手动设置环境变量,如果编译器安装在编译机器上,CMake会通过显式给出的-G选项找到编译器本身。

另请参阅this 关于 -H 选项的问题。

【讨论】:

  • 谢谢你的建议,我不知道这个。
猜你喜欢
  • 2017-06-14
  • 2020-02-06
  • 2014-12-22
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
相关资源
最近更新 更多