2012-02-15 98 views
0

我想用add_custom_command來生成一個文件。我知道我可以使用add_custom_target來設置DEPENDS來調用命令。但是這也會創建一個目標(就像在Visual Studio中一樣,它會創建一個.vcxproj)。我使用另一個add_custom_command,然後設置DEPENDS但它不起作用。爲什麼?哪個級別依賴可以調用它?如何調用add_custom_command

是否有任何方法調用add_custom_command,如make install調用install命令。

回答

1

add_custom_command()函數對應於Makefile的規則。它列出了生成某個文件所需的命令。如果您希望能夠從make調用中運行,則應該將其包裝到`add_custom_target(tgt DEPENDS cmd)中,就像您所說的那樣。

因此,沒有辦法執行custom_command,而無需爲它們創建custom_target。

+0

非常感謝,所以add_customer_target是執行它的唯一方法。但你現在有一些其他的命令可以設置依賴關係。那麼爲什麼這些命令不能調用它。 – Samuel 2012-02-16 01:32:01

+0

因爲這些命令本身並未執行。如果你'add_custom_command(OUTPUT a)'然後'add_custom_command(OUTPUT b DEPENDS $ {CMAKE_CURRENT_BINARY_DIR}/a)',這些命令不會在'make'中執行。但是,當你執行'add_custom_target(tgt DEPENDS $ {CMAKE_CURRENT_BINARY_DIR}/b)'時,你現在可以發出'make tgt',這將運行這兩個命令。 – arrowd 2012-02-16 07:37:10