2010-07-21 26 views
2

我在構建過程中需要一個文件處理鏈。工作流程能夠容易地確定並且由一個文件名,只有擴展變化,比如file.a - > file.b - > file.c。所以,Make的聲明式語法顯然是一個例子。但是,當我看到,對於這個的CMake會看起來像一個明確的add_custom_command對每個文件進行處理的每個步驟。CMake是否有類似Make的%替換支持?

所以,問題是,如果CMake的支持換人就像%以上製作,以便只處理的每個步驟一般規則是必需的。

我想這就像:

add_custom_command(OUTPUT %.b 
    COMMAND convert %.a > %.b 
    DEPENDS %.a) 

add_custom_command(OUTPUT %.c 
    COMMAND convert %.b > %.c 
    DEPENDS %.b) 

回答

2

不,CMake的不具有圖案的任何支持。人們通常使用宏作爲解決方法。

人不使用CMake的,因爲優雅的語法,它的表現力。

0

你可以使用宏。

一個簡單的例子:

MACRO(TEST) 
MESSAGE ("HELLO ${ARGV}") 
ENDMACRO(TEST) 

TEST("WORLD") 
+1

是的,我可以。但它是完全相同的*顯式*方式。這樣我需要在使用前聲明*文件。 MACRO(MY_MACRO) ... ENDMACRO(MY_MACRO) MY_MACRO( 「文件1」) MY_MACRO( 「文件2」) MY_MACRO( 「文件3」) add_custom_command(OUTPUT program.x COMMAND CXX -o program.x file1.cc file2.cc file3.cc DEPENDS file1.cc file2.cc file3.cc) 和語法表現更糟糕的是,因爲宏調用一些字符串參數,它定義文件名不帶擴展名,而在add_custom_command我們使用文件的全名。 – seas 2010-07-21 08:20:02

+0

您可以在宏添加文件擴展名: MACRO(轉換文件DEPS) ADD_CUSTOM_COMMAND(OUTPUT $ {}文件.X COMMAND CXX -o $ {}文件.X $ {} DEPS $ DEPENDS {} DEPS) ENDMACRO(兌換 ) – 2010-07-21 10:16:39

相關問題