2011-05-23 116 views
2

這裏是上下文:製作 - 自動生成文件問題

我上生成文件的工作在每一個構建創建.H,包括另一個makefile文件,將使用此標題。我無法編輯第二個。

使用目標全部取決於我的文件,它編譯第一次,創建失蹤的MyHeader.h。問題是,當我重新編譯,頭不再生...

我的makefile文件看起來是這樣的:

all: myHeader.h 

myHeader.h: 
    scriptToBuildMyHeader.sh 

include obscureAndPrivateMakefile.make 

我也有在開始時.PHONY目標試過。同樣的結果:一旦創建,它就不會在每次構建時重新生成。 PS:我不能在make之前調用腳本。

做一些makfile大師有任何想法如何處理?

謝謝!

回答

3

因爲myHeader.h沒有依賴關係,所以一旦它存在就不會重建它。您可以從myHeader.h解決此通過創建一個依賴到假目標,如:

​​

然而,這將您的構建大幅放緩,如標題(和任何源文件,包括它),就需要每次重建。

0

這裏的另一種可能的方法:

all: clean foo.txt 

clean: 
    rm foo.txt 

foo.txt: 
    echo > foo.txt 

在那裏我使用echo > foo.txt來模擬你的頭的創建。

1

問題是,因爲myHeader.h不依賴於任何東西,所以它存在並因此在第二個版本上是最新的。爲了確保它的每一次建成,它必須依賴於一個不存在的文件:

myHeader.h: .FORCE 
     scriptToBuildMyHeader.sh 

.FORCE: 

.FORCE」(或有時,FORCE)是傳統使用的名稱。

如果你使用GNU make,都可以使「不存在」文件到假目標:

.PHONY: .FORCE 

這樣做的好處是,(GNU)make不會創建文件.FORCE即使你運行make -t - 這將破壞標題的自動重建,因爲該規則取決於沒有實際存在的文件.FORCE