如何知道cmake项目一代是否成功结束

时间:2016-07-07 18:48:07

标签: cmake build-automation

过去几周我正在玩构建自动化。在Cmake的帮助下,我能够为Windows生成Visual Studio解决方案和MinGW makefile,并为Linux生成GCC makefile。 Cmake任务分别通过Linux上的shell脚本通过Windows上的批处理文件执行。一切看起来都正确,并按预期工作。我的计划是设置不同的测试服务器,整个构建和测试过程将自动化,结果将在某处报告。

我无法弄清楚的一件事是如何获得cmake命令的结果。我想知道cmake命令是否成功结束,因此如果出现错误,将报告失败。此时我能够解析结果并查找“构建文件已写入:...”句子,但我认为这不是一个非常强大的解决方案。

有没有办法确定cmake命令是否成功?我不想坚持批处理文件,也欢迎使用Python(或其他)脚本。感谢。

2 个答案:

答案 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)

执行与最终目标关联的其他操作,例如创建文件,或将时间戳记的日志条目附加到给定文件。