2011-04-14 35 views
0

我正在用遞歸Makefile建立一個項目。基本格式很簡單:源文件在各個子目錄中,Makefile在項目根目錄中。從項目根目錄調用make將調用子目錄中的所有makefile。到現在爲止還挺好。使用遞歸生成文件時,如何將對象文件文件夾傳遞給調用make?

所以現在我已經有了目標文件。我怎樣才能讓主makefile看到哪些目標文件存在於子目錄中,最好將它們傳遞給鏈接器?

回答

1

這實際上不是一個好方法(請參閱recursive make considered harmful),因爲遞歸makefile會多次啓動Make程序的開銷。實際上,通過包含一個Makefile而不是從另一個Makefile中調用它,可以更快地完成相同的任務。如果從子目錄中包含make文件,那麼也將解決全局make文件的問題,即查看它需要的所有文件以將它們鏈接到一起。您可以有一個代表所有對象文件的單個變量,並且每個包含的文件都可以附加到該文件中。

另外,請允許我建議使用CMake。它使配置你的構建機制變得簡單得多,而且不易出錯,但是仍然允許你使用Make進行構建(它會爲你生成Makefiles)。

+0

每種方法都有其優點和缺點。多次啓動'make'的開銷可以忽略不計,並且不是您鏈接到的文章中針對遞歸make的主要參數。 – Idelic 2011-04-15 06:25:39

相關問題