2013-05-17 78 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'标志吗?他们不在你的生成文件中。...... –