我为以下cpp文件夹结构编写了一个makefile:
-build
makefile
-include
a.hpp
b.hpp
-src
a.cpp
b.cpp
main.cpp
,makefile如下:
IDIR =../include
SDIR = ../src
CXX=g++
CFLAGS=-I$(IDIR) -std=c++11
_DEPS = a.hpp b.hpp
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
OBJ = a.o b.o main.o
%.o: $(SDIR)/%.cpp $(DEPS)
$(CXX) -c -o $@ $< $(CFLAGS)
main: $(OBJ)
g++ -o $@ $^ $(CFLAGS)
clean:
rm -f *o
rm -f *~
rm -f main
我想将main放在一个单独的文件夹中:
-build
makefile
-include
a.hpp
b.hpp
-main
main.cpp
-src
a.cpp
b.cpp
我尝试这样做的makefile是:
IDIR =../include
SDIR = ../src
MDIR = ../main
CXX=g++
CFLAGS=-I$(IDIR) -std=c++11
_DEPS = a.hpp b.hpp
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
OBJ = a.o b.o main.o
%.o: $(SDIR)/%.cpp $(DEPS)
$(CXX) -c -o $@ $< $(CFLAGS)
main.o: $(MDIR)/main.cpp $(DEPS)
$(CXX) -c -o $@ $< $(CFLAGS)
main: $(OBJ)
g++ -o $@ $^ $(CFLAGS)
clean:
rm -f *o
rm -f *~
rm -f main
但我最终只为main生成了目标文件而其他人没有编译。任何建议。
PS:我想生成多个可执行文件,这就是为什么我要将文件移动到新文件夹并添加main2.cpp等以便稍后执行此操作。