2016-04-16 47 views
0

問題:我想在make makefile時回顯一些信息,makefile是由CMakeLists.txt生成的,而且我不想在cmake CMakeLists時回顯信息.txt,我該怎麼辦? 在Makefile文件,代碼是這樣的: CMake如何將CMakeLists.txt中的shell命令轉換爲Makefile

.build-pre: 
    @echo 
    @echo "###########################################################" 
    @echo "######## Welcome to Prosim Build System ###################" 

我應該在的CMakeLists.txt WIRTE什麼,這樣我可以得到這樣的Makefile中?

+1

你試過了嗎? https://cmake.org/cmake/help/v3.5/command/message.html – usr1234567

+0

「add_custom_target」和/或「add_custom_command」與設置所有其他目標依賴它的一些組合,所以它首先運行應該工作。對於這個特殊的消息我們沒有多少意見,它沒有提供有關構建過程的有用信息。 –

+0

@ usr1234567,其實我想要回聲信息時make makefile –

回答

0

您可以使用add_custom_target函數來創建一個虛擬目標,該虛擬目標的依賴項設置爲所有其他目標,使其首先構建。您可以使用ALL選項來使其每次構建。但是,您仍然需要使用add_dependencies以使其在每隔一個目標之前構建之前的

最後,使用command-line tool mode of CMake使其與平臺無關。 (add_custom_targetCOMMENT選項可能足以顯示該消息)。


add_custom_target(display_intro ALL COMMAND cmake -E echo Foo) 

# .... 
add_executable(your_app ...) 
add_dependencies(your_app display_intro) 

add_library(your_lib ...) 
add_dependencies(your_lib display_intro) 

爲了方便起見,你也許可以換一個函數或宏add_executableadd_dependencies

+0

感謝您的慷慨幫助(^ _ ^),其實我很瞭解這兩個功能,但我可以用它們來解決我的任務。此外,我在CMakeLists.txt的開頭只使用了一個add_custom_target(temp_target ALL),並在一個add_custom_command函數中使用了大量的add_custom_command和COMMAND,可以這樣使用嗎? –

+0

很難判斷,如果沒有看到一個體面的大小項目所需的所有CMakeLists。如果它解決了你的問題,那麼很難抱怨。對許多'add_custom_command'的需求有點可疑 - 越簡單越好,並且您重複自己的事實暗示需要重構。就我個人而言,當我檢查構建的輸出(即'make'調用)時,我尋找警告和錯誤。如果需要做出這麼大的努力才能使輸出變得更漂亮,那麼可能就不值得這樣麻煩了(特別是在平行構建時)。 –

+0

對不起,我在「實際上我理解了這兩個函數」中丟失了一個詞,我不理解它們(即爲什麼CMake不支持直接使用Shell命令)。希望我所做的事可以通過我的項目。再次感謝您的幫助^ _ ^。 –