2011-04-24 68 views
0

我有一個目錄,它下面像這樣4個子目錄一個makefile:如何創建幾個子目錄

myDir: 
myDir/Part1 
myDir/Part2 
myDir/Part3 
myDir/shared 

我想打一個可執行文件,從共享文件的需要,它鏈接到文件的第2部分並將可執行文件放入myDir中。

這是我嘗試(在makefile是相關僅行):在Makefile

Part2/part2code.o: ../Shared/helper.o 
gcc -ansi -pedantic-errors -c -Wall -Werror -g -o Part2/part2code.o Part2/part2code.c 

,並在它上面:在makefile

Shared/helper.o: 
gcc -ansi -pedantic-errors -c -Wall -Werror -g -o Shared/helper.o Shared/helper.c 

,並在其上方

part2code: Part2/part2code.o ../Shared/helper.o 
gcc -ansi -pedantic-errors -Wall -Werror -g -lm -o part2code Part2/part2code.o ../Shared/helper.o 

(I也嘗試不../共享之前)

我得到這個錯誤:

No such file or directory. 

幫助?

謝謝!

回答

2

在這種情況下,文件名中的路徑都與makefile所在的位置相關。所以例如Part2/part2code.o: ../Shared/helper.o不正確;它應該簡單地是Part2/part2code.o: Shared/helper.o(依此類推)。還要注意,你已經在你的makefile中寫入了Shared,但是你已經將你的目錄列爲shared ...

儘管實際上,這仍然是錯誤的。 a: b等規則表示b先決條件a;即在製作b之前,您無法制作a。你的目標文件不是這種情況;他們不相互依賴。通常,目標文件完全取決於其組成源文件(*.c*.h)。因此,舉例來說,你的part2code.o規則可能是這樣的:(注意其分別替代在目標和先決條件,使用特殊變量[email protected]$^的)

Part2/part2code.o: Part2/part2code.c 
    gcc -ansi -pedantic-errors -c -Wall -Werror -g -o [email protected] $^ 

+0

我相信海報說他沒有../就嘗試過。 – 2011-04-24 13:35:29

+0

@Konstantin:的確他/她做到了。但有了這些信息,它肯定沒有。 – 2011-04-24 14:09:26

相關問題