问题描述
我想将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
。