使用C ++中的MinGW Tool包含多个类/.o文件

问题描述

我想将2个类编译为.o文件,并将它们包含在从avl.cpp主文件创建的Test.exe文件中。

在执行此操作时,我使用了MinGW工具,但是当我在CMD中键入命令mingw32-make时什么也没发生。当我仅上一堂课时,就没有问题。 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使用依赖关系来确定以什么顺序构建的内容。 因此,find /cygdrive/d/Jenkins/workspace/sam-org/testing/app_name/src/abc -name "*.dsx" -exec cp "{}" /home/kumar/ITEST_FILES \ 行实际上应该是execute:,以告诉make在完成execute: compile步骤之后执行execute步骤。

但是您应该真正将编译链接分为几个步骤,以使用make的依赖项解析质量。

这是我要怎么做:

compile

请注意,缩进必须是制表符,而不是空格。

实际上,我不会将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