2016-07-07 210 views
0

最近幾周我在玩構建自動化。在Cmake的幫助下,我能夠爲Windows生成Visual Studio解決方案和MinGW makefile,併爲Linux生成GCC makefile。 Cmake任務通過Windows上的批處理文件分別通過Linux上的shell腳本執行。一切看起來正確,並按預期工作。我的計劃是設置不同的測試服務器,整個構建和測試過程將自動完成,結果將在某處報告。如何知道cmake項目代是否成功結束

我還沒有弄清楚的一件事是如何獲得cmake命令的結果。我想知道cmake命令是否成功結束,所以如果出現錯誤,將報告失敗。在這一刻,我可以解析結果並查找「構建文件已寫入......」句子,但我認爲這不是真正可靠的解決方案。

有沒有辦法確定cmake命令是否成功?我不想堅持批處理文件,Python(或其他)腳本也是受歡迎的。謝謝。

回答

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 

參考

0

有一個與最終目標相關的額外操作,如創建文件或將時間戳日誌條目附加到給定文件。

相關問題