Makefile出现问题,需要澄清

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/

下面是我使用的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/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
    ,其中
    obj//src
    不存在。您需要将源代码更改为前面没有路径。可能是在shell命令中首先使用cd。尝试使用
    SOURCES=$(shell cd src&&echo*.cpp)
    ,并将
    $(SOURCES)
    替换为
    src/$(SOURCES)
    。同样的交易,
    src
    出现在某个地方,在topAll上更新的脚本是不好的。您没有列出$(对象)的依赖项,因此它们永远不会重新构建。嘿,图像不再显示-您可以上传它或smth,以便其他人也可以看到它吗??
    %.o : %.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@