Makefile出现问题,需要澄清
下面是我使用的Makefile。一切正常,除了.o应该在obj/目录中创建,而不是 请问我做错了什么 在确保Makefile出现问题,需要澄清,makefile,Makefile,下面是我使用的Makefile。一切正常,除了.o应该在obj/目录中创建,而不是 请问我做错了什么 在确保 src目录包含一个.cpp 目标目录存在且为空 obj目录存在且为空 当运行make时,我看到 g++ -pedantic -Wall -c src/a.cpp -o /Users/me/Dropbox/dev/c++/hott/obj/src/a.o 应该是什么时候 g++ -pedantic -Wall -c src/a.cpp -o /Users/me/Dropbox/
- src目录包含一个.cpp
- 目标目录存在且为空
- obj目录存在且为空
make
时,我看到
g++ -pedantic -Wall -c src/a.cpp -o /Users/me/Dropbox/dev/c++/hott/obj/src/a.o
应该是什么时候
g++ -pedantic -Wall -c src/a.cpp -o /Users/me/Dropbox/dev/c++/hott/obj/a.o
请问我做错了什么?
更新:如果使用
-o
则必须指定文件名,而不仅仅是输出路径,当硬编码路径和不依赖pwd
分辨率时,似乎没有任何变化。尝试:
$(CC) $(FLAGS) $(SOURCES) $(OBJ)/$@
这个问题也可能有帮助:
- ,这样Make就可以有只构建必要内容的规则。(即,“要从.cpp文件生成任何.o文件,请执行以下操作:__;”)
%.o:%.c $(CC)-c$(CFLAGS)$(CPPFLAGS)$<-o$@
您可以对其进行编辑,将
包含在$(OBJ)
之前,这样使用时一切正常。乔纳森建议的一个小修改$@
它当前正在尝试
,其中g++-pedantic-Wall-csrc/a.cpp-o obj//src/a.o
不存在。您需要将源代码更改为前面没有路径。可能是在shell命令中首先使用cd。尝试使用obj//src
,并将SOURCES=$(shell cd src&&echo*.cpp)
替换为$(SOURCES)
。同样的交易,src/$(SOURCES)
出现在某个地方,在topAll上更新的脚本是不好的。您没有列出$(对象)的依赖项,因此它们永远不会重新构建。嘿,图像不再显示-您可以上传它或smth,以便其他人也可以看到它吗??src
%.o : %.c $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@