我已經得到了我成功之前,用於小(個人)的項目通用的makefile,如下失敗以下目錄結構:GNU使花紋與規則「Main.cpp的」
ParentFolder/
Makefile
hdr/
file1.h
...
src/
file1.cpp
...
obj/
我給makefile文件給同事,他們發現它沒有工作 - 經過一番調查,問題的原因似乎是,他們有一個源文件中被稱爲main.cpp
src/
,運行時make
將提供以下錯誤:如果我重新命名main.cpp
到別的
make: *** No rule to make target `obj/main.o', needed by `MyProgram'. Stop.
(例如test.cpp
),那麼makefile按預期工作。
這種行爲的原因是什麼?我已經瀏覽了GNU Make Manual,但沒有發現任何關於文件main.*
的特殊處理(實際上,有些示例使用它)的任何內容。
在試圖解決問題時,我發現爲main.o
定義明確的規則意味着它將被發現 - 因此,我認爲它是與名稱和基於模式的規則的交互,但我一直未能找出可能的結果。
啊,非常感謝!添加規則修復了問題 - 事實證明,當我將'main.cpp'重命名爲'test.cpp'時,首先查看了另一個以s開頭的文件,這是編譯失敗的原因,因此我從未看到「沒有匹配規則「test.o錯誤,並認爲問題已修復。 我很樂意爲依賴文件提供幫助。我以爲我正確使用它們,但也許不是。 – Wheels2050
我應該補充說,我適應了我的Makefile從一個發現[這裏](http://stackoverflow.com/questions/313778/generate-dependencies-for-a-makefile-for-a-project-in-c-c) – Wheels2050