【发布时间】:2014-01-27 14:13:31
【问题描述】:
我有一些用于第三方项目的大型 make 文件,由于链接器问题而无法构建。
通过查看 make 文件,我认为它应该执行如下操作:
LIBS = -lm
CC = gcc
bin = bin
myapp: $(bin)/main.o $(bin)/other.o $(bin)/etc.o
$(CC) $(bin)/main.o $(bin)/other.o $(bin)/etc.o $(LIBS) -o myapp
gcc bin/main.o bin/other.o bin/etc.o -lm -o myapp
从错误来看,它似乎在以下方面失败:它也没有将任何 .o 文件放在预期的 bin/ 位置,而是将它们留在源目录中......
cc main.o -o myapp
但我找不到任何可能来自的地方。有没有办法通过 make 文件获取某种堆栈跟踪?
我知道 -n 和 -d,但似乎都没有告诉我哪个目标行和文件产生了该命令,或者哪个系列目标导致了那里以及任何 $() 扩展的值(我期望的是唯一的 myapp:我可以在任何 makefile 中找到...)
【问题讨论】:
-
@Evert 这是用于自动工具生成的makefile。
-
@Graeme 谢谢,我没有意识到这一点。 VERBOSE=1 也适用于 cmake 生成的 makefile,但也许 cmake 使用自动工具?
-
cmake是一种替代方案,并且更跨平台,尽管它可能会创建相同或相似的变量。不过,我在问题中都没有看到!
标签: makefile