2011-12-20 146 views
2

我有問題,add_custom_command始終過時,因此可以在每個構建版上運行。自定義命令運行的工具,是在同一個項目的目標產生是由另一個目標文件:cmake add_custom_command已過時

add_executable(GeneratorTool main.cpp) 

add_custom_command(
    OUTPUT generated.h 
    COMMAND GeneratorTool 
    DEPENDS main.cpp 
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
    COMMENT "** GeneratorTool **" 
) 

add_library(MyLib STATIC generated.h ...) 

在構建輸出(Visual Studio 2010中)我總是看到** ** GeneratorTool。我希望它一旦生成.h就不會再生成,並且比main.cpp更新。 任何想法?

感謝, 約亨

回答

1

首先,你可以把DEPENDS上GeneratorTool在add_custom_command,而不是main.cppGeneratorTool已經取決於main.cpp

然後最有可能的是generated.h的位置,這是不明確的,這強制重建generated.h。

確保MyLib在正確的位置查找generated.h

我盲目的猜測是嘗試:

add_library(MyLib STATIC ${CMAKE_CURRENT_SOURCE_DIR}/generated.h ...) 
+0

也add_custom_command(OUTPUT $ {} CMAKE_CURRENT_SOURCE_DIR ... /generated.h)可能是必要的 – Jochen 2013-08-09 19:50:53

+0

萬一有人碰到這個失蹄:從不輸出生成的東西進入源代碼樹,總是使用構建樹,可以通過'$ {CMAKE_BINARY_DIR}'和'$ {CMAKE_CURRENT_BINARY_DIR}'引用。 – languitar 2015-10-02 11:53:51

相關問題