1
假設我有數百個目標,其中一些對於構建成功並不重要(例如,我在make上使用--keep-going
或在忍者上使用-k 9000
),我需要找出哪些cmake目標失敗。除了翻譯單元編譯失敗之外,報告目標失敗
隨着add_custom_command()
一個生成後命令可以被添加到一個cmake的目標,它打印的名字是這樣的:
success: myTarget.dll
可是你知道失敗是什麼?
如果鏈接失敗,我可以解析我使用的任何(ninja/make/msbuild)的詳細輸出,並查看哪個目標失敗。
但是,如果編譯翻譯單元失敗,我得到的唯一錯誤就是特定的源文件無法編譯,並找出哪個cmake目標完全失敗更困難。
我想出了構建運行後這樣做的唯一的事情已經失敗:ninja -nv
這將使一個冗長的試運行,我可以攔截鏈接命令和解析失敗這種方式CMake的目標...
還有其他想法嗎?
你可能想看看我的答案爲(HTTP [保存並重新打印警告,對後續構建成功編譯的文件?] //stackoverflow.com/questions/31348508/save-and-reprint-warnings-for-successfully-compiled-files-on-subsequent-builds/31710461#31710461)。我認爲你可以通過使用[RULE_LAUNCH_COMPILE](https://cmake.org/cmake/help/v3.4/prop_gbl/RULE_LAUNCH_COMPILE.html)提供構建腳本並捕獲'stderr'輸出來實現你想要的。 – Florian