过去几周我正在玩构建自动化。在Cmake的帮助下,我能够为Windows生成Visual Studio解决方案和MinGW makefile,并为Linux生成GCC makefile。 Cmake任务分别通过Linux上的shell脚本通过Windows上的批处理文件执行。一切看起来都正确,并按预期工作。我的计划是设置不同的测试服务器,整个构建和测试过程将自动化,结果将在某处报告。
我无法弄清楚的一件事是如何获得cmake命令的结果。我想知道cmake命令是否成功结束,因此如果出现错误,将报告失败。此时我能够解析结果并查找“构建文件已写入:...”句子,但我认为这不是一个非常强大的解决方案。
有没有办法确定cmake命令是否成功?我不想坚持批处理文件,也欢迎使用Python(或其他)脚本。感谢。
答案 0 :(得分:1)
只需确保您的脚本以您正在调用的程序报告的错误级别退出。
让我通过展示一个例子来解释这个:
<强> vs2015_x86_build.cmd 强>
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: usage:
:: vs2015_x86_build.cmd <target> <config>
:: <target> - target to be built (default: ALL_BUILD)
:: <config> - configuration to be used for build (default: Debug)
if NOT "%1" == "" (SET CMAKE_TARGET=%1) else (SET CMAKE_TARGET=ALL_BUILD)
if NOT "%2" == "" (set CMAKE_BUILD_TYPE=%2) else (set CMAKE_BUILD_TYPE=Debug)
SET CMAKE_BINARY_DIR=vs2015_x86
IF NOT EXIST "%CMAKE_BINARY_DIR%\*.sln" (
cmake -H"." -B"%CMAKE_BINARY_DIR%" -G"Visual Studio 14 2015"
SET GENERATE_ERRORLEVEL=!ERRORLEVEL!
IF NOT "!GENERATE_ERRORLEVEL!"=="0" (
DEL /F /Q "%CMAKE_BINARY_DIR%\*.sln"
EXIT /B !GENERATE_ERRORLEVEL!
)
)
cmake --build "%CMAKE_BINARY_DIR%" --target "%CMAKE_TARGET%" --config "%CMAKE_BUILD_TYPE%"
SET BUILD_ERRORLEVEL=!ERRORLEVEL!
IF NOT "!BUILD_ERRORLEVEL!"=="0" (
EXIT /B !BUILD_ERRORLEVEL!
)
ENDLOCAL
<强>参考强>
答案 1 :(得分:0)
执行与最终目标关联的其他操作,例如创建文件,或将时间戳记的日志条目附加到给定文件。