Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 生成文件:将所有.cpp文件编译为.o文件_Makefile - Fatal编程技术网

Makefile 生成文件:将所有.cpp文件编译为.o文件

Makefile 生成文件:将所有.cpp文件编译为.o文件,makefile,Makefile,我正在尝试创建一个make文件,它将test目录中的所有.cpp文件编译为obj目录中的.o文件。下面是我正在做的事情的简略版本。问题是对.o文件的编译调用具有正确的.o名称,但它们都编译相同的.cpp文件 gcc -c -o obj/foo.o test/foo.c gcc -c -o obj/bar.o test/foo.c gcc -c -o obj/baz.o test/foo.c 我需要做哪些更改才能编译相应的.cpp文件 CPP_FILES := $(wildcard test/*

我正在尝试创建一个make文件,它将
test
目录中的所有
.cpp
文件编译为
obj
目录中的
.o
文件。下面是我正在做的事情的简略版本。问题是对
.o
文件的编译调用具有正确的
.o
名称,但它们都编译相同的
.cpp
文件

gcc -c -o obj/foo.o test/foo.c
gcc -c -o obj/bar.o test/foo.c
gcc -c -o obj/baz.o test/foo.c
我需要做哪些更改才能编译相应的
.cpp
文件

CPP_FILES := $(wildcard test/*.cpp)
OBJ_FILES = $(patsubst test/%.cpp,obj/%.o,$(CPP_FILES))


obj/%.o: $(CPP_FILES)
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

executable : $(OBJ_FILES) foo.a
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
CPP_文件:=$(通配符测试/*.CPP)
OBJ_文件=$(patsubst test/%.cpp,OBJ/%.o,$(cpp_文件))
obj/%.o:$(CPP_文件)
$(CXX)$(CPPFLAGS)$(CXXFLAGS)-c-o$@$<
可执行文件:$(OBJ_文件)foo.a
$(CXX)$(CPPFLAGS)$(CXXFLAGS)-lpthread$^-o$@

谢谢。

您需要为模板规则匹配
%
。现在您是说每个.o都依赖于每个cpp文件。和
$
obj/%.o : test/%.cpp