在 C++ 中使用 MinGW 工具包含多个 类/ .o 文件
Including Multiple Classes/ .o files with MinGW Tool in C++
我想将 2 classes 编译成 .o 文件并将它们包含在从 avl.cpp 主文件创建的 Test.exe 文件中。
我在执行此操作时使用了 MinGW 工具,但是当我在 CMD 中键入命令 mingw32-make
时没有任何反应。当我只用 1 class 这样做时,没有问题。
makefile文件内容如下:
all: compile execute
compile:
g++ -I ./include/ -o ./lib/AVLClass.o -c ./src/AVLClass.cpp
g++ -I ./include/ -o ./lib/PersonsClass.o -c ./src/PersonsClass.cpp
g++ -I ./include/ -o ./bin/Test ./lib/PersonsClass.o ./lib/AVLClass.o ./src/avl.cpp
execute:
./bin/Test
Makefile 使用依赖项来确定构建内容的顺序。
所以 execute:
行实际上应该是 execute: compile
来告诉 make 在 compile
步骤完成后执行 execute
步骤。
但是您真的应该将编译和链接拆分为多个步骤,以使用 make 的依赖性解析特性。
以下是我的做法:
BINEXT=.exe
CXX=g++
MKDIR=mkdir -p
RM=rm -f
all: bin/Test$(BINEXT) test
lib/%.o: src/%.cpp
$(MKDIR) lib
$(CXX) -c -o $@ $^
bin/Test$(BINEXT): lib/AVLClass.o lib/PersonsClass.o lib/avl.o
$(MKDIR) bin
$(CXX) -o $@ $^
test: bin/Test$(BINEXT)
bin/Test$(BINEXT)
clean:
$(RM) lib/*.o bin/Test$(BINEXT)
注意缩进必须是制表符,而不是空格。
实际上我不会将 test
添加到 all
目标。如果用户想要 运行 make test
.
最好留给用户
我想将 2 classes 编译成 .o 文件并将它们包含在从 avl.cpp 主文件创建的 Test.exe 文件中。
我在执行此操作时使用了 MinGW 工具,但是当我在 CMD 中键入命令 mingw32-make
时没有任何反应。当我只用 1 class 这样做时,没有问题。
makefile文件内容如下:
all: compile execute
compile:
g++ -I ./include/ -o ./lib/AVLClass.o -c ./src/AVLClass.cpp
g++ -I ./include/ -o ./lib/PersonsClass.o -c ./src/PersonsClass.cpp
g++ -I ./include/ -o ./bin/Test ./lib/PersonsClass.o ./lib/AVLClass.o ./src/avl.cpp
execute:
./bin/Test
Makefile 使用依赖项来确定构建内容的顺序。
所以 execute:
行实际上应该是 execute: compile
来告诉 make 在 compile
步骤完成后执行 execute
步骤。
但是您真的应该将编译和链接拆分为多个步骤,以使用 make 的依赖性解析特性。
以下是我的做法:
BINEXT=.exe
CXX=g++
MKDIR=mkdir -p
RM=rm -f
all: bin/Test$(BINEXT) test
lib/%.o: src/%.cpp
$(MKDIR) lib
$(CXX) -c -o $@ $^
bin/Test$(BINEXT): lib/AVLClass.o lib/PersonsClass.o lib/avl.o
$(MKDIR) bin
$(CXX) -o $@ $^
test: bin/Test$(BINEXT)
bin/Test$(BINEXT)
clean:
$(RM) lib/*.o bin/Test$(BINEXT)
注意缩进必须是制表符,而不是空格。
实际上我不会将 test
添加到 all
目标。如果用户想要 运行 make test
.