2013-09-26 48 views
2

在我的cmake腳本中,我確定當前日期並將其交給我的c++程序源,以便將生成日期編譯到程序中。問題是,在make的後續運行中,其中cmake根本不能運行,日期不會更新。在'make'的後續運行中強制刷新cmake腳本

如何強制cmake刷新其變量並僅使用make重新編譯程序?另外:什麼是編譯生成日期到二進制文件的最佳方式?

cmake腳本包含此:

INCLUDE(Today) 
TODAY(DATE) 

ADD_DEFINITIONS(
    ... 
    -DBUILD_DATE=\"${DATE}\" 
) 

回答

2

您可以使用自定義的目標來執行任何你想要的。自定義目標始終被視爲過時並在每個構建中運行。

add_custom_target(RerunCmake ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR}) 
add_dependencies(YourTarget RerunCmake) 

這可以正常使用makefile。但是,例如Visual Studio會在每次構建後要求重新加載項目,因爲項目文件在磁盤上發生更改。

也許這將是更好地使剛剛更新與正確的日期一個頭文件,所以cmake的不會重新運行在每一個建設

+1

+1提示自定義目標自定義目標。然而,更大的問題可能是如何將日期返回到Makefile而不觸發重建完整項目(例如,您的頭文件解決方案)。 – ComicSansMS