2014-03-26 128 views
1

我有兩個makefile,directoryA/MakefiledirectoryB/MakefileMakefile包含來自不同目錄的makefile

directoryA/Makefile取決於相當大且複雜的directoryB/Makefile中的目標。

我可以做一個遞歸使

$(MAKE) -C directoryB 

但是,這是不可取的several reasons。兩大原因:我必須多次執行makefile,並且make無法正確知道何時需要重建目標。

我想使用include指令。問題是雙重的:

  1. directoryB/Makefile中的目標都是相對於該Makefile定義的。

  2. 許多命令取決於工作目錄是directoryB

遞歸使得解決了這兩個問題,但有很大的缺點(前面提到過)。在使用include時有沒有辦法解決這兩個問題?

+1

不是沒有改寫makefile文件中的至少一個。非遞歸makefile必須從一開始就被創建,以瞭解它們是非遞歸的。 – MadScientist

+0

'directoryA/Makefile'中的目標/命令是否也取決於工作目錄是'directoryA'? – Beta

+0

@Beta,目前是,但是'directoryA/Makefile'不是那麼簡單。我想我可以重寫那個包含它的目錄,然後用'directoryB/Makefile'包含它。 –

回答

0

很難沒有看到directoryA/Makefile說,但另一種選擇是有它include directoryB/Makefile,然後

cd directoryB 
make -f ../directoryA/Makefile