2011-03-18 83 views
0

This link提到通配符是一種自動列出Makefile.am文件中的SOURCES和HEADERS的方法。它還提到有些人編寫外部腳本來生成這些文件。Autotools:在Makefile.am中生成源文件和頭文件

你知道在這裏自動包含所有* .h * .cpp的標準方式,還是應該編寫自己的Perl腳本來生成它們?你有沒有這樣的腳本,你使用?

PS:我根據目錄下面的純邏輯的分離組織的源文件在我的項目:

src/dog/woof.h 
src/dog/woof.cpp 
src/cow/moo.h 
src/cow/moo.cpp 

回答

3

Automake會不會增加這個功能。它假定特定的.h或.cpp文件與特定項目相關聯。這種假設適用於許多常見的項目佈局,並且不符合任何不同的佈局。

例如,我已經是被佈置爲

src/module/code 
src/app/code 
src/library/code 
include/headers 

從根一箇中央makefile建立的項目。其他時候,我已經從相應的本地目錄中的四個makefile創建了相同的佈局。

項目中存在很多可變性。有些將公共頭文件與私有頭文件混合在代碼目錄中,有些將它們分開。一些構建共享對象庫,有些則不。某些不支持在不兼容的平臺上編譯的發貨代碼。

放入一個通配符包含實際上會造成限制功能的巨大風險,對於那些執行像'file.template.c'這樣的事情的奇怪人來說,這將是致命的。

如果你認爲它是automake的缺陷,那很好;然而,這是automake擁抱的缺陷之一,因爲它被保留下來以使事情更加靈活。 Automake並沒有強加你做什麼的「如何」,它提供了很多啓用工具,但它確實沒有被迫成爲佈局或構建代碼的一種「方法」。