23,217
社区成员




1 sdir=./src/
2 odir=./obj/
3 idir=./include/
4 srcd=$(wildcard ./src/*.cpp)
5 src=$(notdir $(srcd))
6 obj=$(patsubst %.cpp,%.o,$(src))
7 target=ctest
8 $(target):$(odir)$(obj)
9 g++ $^ -o $@
10 $(odir)%.o:$(sdir)%.cpp
11 g++ -c $< -o $@ -I$(idir)
12 .PHONY:clean
13 clean:
14 rm $(odir)$(obj) $(target) -f
7 obj=$(patsubst %.cpp,$(odir)%.o,$(src))#将.cpp文件名替换为.o
8 target=ctest
9
10 $(target):$(obj)
11 g++ -g $^ -o $@
$(odir)$(obj)不是给每个$(obj)都添加路径$(odir)的意思吗,请问一下大佬要怎么改才能正确实现呢 [quote=引用 1 楼 jklinux 的回复:]
问题应是在8 $(target):$(odir)$(obj)这里, 最后一个test.o在没有完整路径的
用 echo 把目标、依赖打印出来看看