2013-05-17 126 views
0

我有最奇怪的問題。 當我運行:使測試 在控制檯中我得到以下錯誤: GCC:album_test.o:沒有這樣的文件或目錄makefile找不到.o文件

makefile

對不起用於連接內容作爲PIC, 網站不停地給我:「你的崗位似乎包含這不是正確的格式 爲代碼代碼」

當我改變這一行:

album_test.o: ./tests/album_test.c album.h 

是:

album_test.o: album_test.c album.h 

,並放置在album_test.c同一目錄中生成文件 一切編譯!

這是非常重要的,該文件將在一個單獨的測試目錄。 有什麼想法?

謝謝!

回答

3

您正在嘗試使用make的內置隱式規則來構建您的對象文件。當make可以在當前目錄中找到源文件時,這種方式起作用,否則不起作用。更新這條規則:

album_test.o: ./tests/album_test.c album.h 

要包括配方:

album_test.o: ./tests/album_test.c album.h 
    $(CC) $(CFLAGS) -c -o [email protected] $< 
+0

你必須展示你的項目佈局一些細節,然後。我做了一個基於你的makefile的測試項目,它似乎與我在這個答案中提出的改變一起工作正常。 –

+0

感謝您的快速回復!但是現在make文件會抱怨它無法編譯,因爲它找不到包含在album.h文件中的album.h和其他.h文件。當我將所有需要的.h文件複製到tests子文件時它編譯。但這些文件必須保留在上層目錄中。 – Stasv

+0

你有沒有正確的路徑將它們包含在'album_test.c'中?你會傳遞適當的'-I'標誌嗎?他們不在你的生成文件中。...... –