c++ - 在 C++ 中使用 MinGW 工具包含多个类/.o 文件

标签 c++ class oop mingw

我想将 2 个类编译成 .o 文件并将它们包含在从 avl.cpp 主文件创建的 Test.exe 文件中。
我在执行此操作时使用了 MinGW 工具,但是当我键入命令 mingw32-make 时没有任何 react 进入CMD。当我只用一个类做这个时,没有问题。
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 做 executecompile 之后步骤完成。
但是您真的应该将编译和链接拆分为步骤以使用 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)
请注意,缩进必须是制表符,而不是空格。
实际上我不会添加 testall目标。如果用户想运行 make test,最好让用户自己决定。 .

关于c++ - 在 C++ 中使用 MinGW 工具包含多个类/.o 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63648497/

相关文章:

c++ - 如果有换行符,则 clang-format 不会附加大括号

c++ - 这是确保隐式类型转换不会发生的合法方法吗

c# - 没有从 T 到 T Base<ChildBase> 的隐式引用转换

java - 如何在java面向对象编程中使用动态数组?

c++ - 使用 ctime 检索时间,包括时区

c++ - 为什么这个 CUDA 内核很慢?

c++将函数放入类中

javascript - 使用 JS 设置输入类

Java - 从属性文件读取对象

c++ - 如何实例化单例