2015-09-25 105 views
0

我有一個包含兩個文件夾的目錄,其中srcbin的makefile位於根目錄下。這個makefile保持編譯(即使沒有更新也不會更新)。我錯過了這個makefile的東西嗎?即使沒有任何更改,Makefile始終是最新的

all: 
    make a b 

a: ./src/a.cpp 
    g++ -o ./bin/a ./src/a.cpp 

b: ./src/b.cpp 
    g++ -o ./bin/b ./src/b.cpp 

回答

4

您的規則要求創建文件ab,但他們不這樣做:他們創造bin/abin/b

因此,當make檢查您的規則時,它總是發現ab不存在,並嘗試通過執行它們的關聯命令來創建它們。

可能的解決辦法:

.PHONY: all 

all: bin/a bin/b 

bin/a: src/a.cpp 
    g++ -o bin/a src/a.cpp 

bin/b: src/b.cpp 
    g++ -o bin/b src/b.cpp 

.PHONYhttps://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets

+0

可我知道.PHONY是什麼? 我已經試過了這段代碼,但現在我得到了'make:'all'沒有什麼可做'。' – jamesalone

+1

@jamesalone那不是重點嗎? – melpomene

相關問題