2012-08-23 43 views
1

我在Linux上的生成過程有一個小問題。「乾淨」的規則不存在於Makefile中,但乾淨的東西生產反正

無論我的代碼中有什麼原因,如果我發出「make clean」,Linux會產生一個名爲「clean」的文件。問題是我的項目的makefile沒有「乾淨的」部分。

看起來我的make是從某個地方拾取錯誤的Makefile,這可能與我的項目的Makefile衝突。

有無論如何知道哪些makefile被擡頭?

+2

生成文件幾乎不是「Linux」,它是make程序或make開始的一些程序。而且,當你沒有顯示任何代碼,即不顯示你的Makefile時,很難提供幫助。 – unwind

+2

當你運行'make clean'時,什麼命令會執行?這個文件中有什麼叫做clean?例如,它是從'clean.c'生成的可執行文件嗎? –

+0

@SteveJessop:你太棒了!我現在發現有一個shell腳本文件被用作我的makefile的參數!它在我眼前,我沒有發現它。非常感謝。 –

回答

2

兩個想法:

  1. 使用--debug命令行選項,make程序告訴你更多關於它在做什麼。
  2. 嘗試添加一個.PHONYclean目標的聲明。
+0

不幸的是,--debug選項沒有告訴我哪個makefile(我正在尋找它的路徑)需要實現。 –

+0

.PHONY很棒!非常感謝。 –

+0

從'make'手冊頁,「如果沒有-f選項,make將按照該順序查找makefile GNUmakefile,makefile和Makefile。」 – mpe

1

我建議使用remake來調試你的makefile。安裝它然後運行remake -x甚至remake -x -d。 (remake實用程序是GNU make的幾乎兼容的變體)。

就你而言,缺少虛假clean目標會使make實用程序創建一個名爲clean的空文件。