尝试使用 makefile 构建程序时出错

时间:2021-05-11 19:30:30

标签: c++ testing makefile doctest

所以我有一个简单的工人阶级天气。我制作了一个有效的 makefile,它使我成为一个完美的可执行文件,以后我可以使用它而不会出现任何错误。然后我被要求用任何框架进行测试,所以我选择了 doctest.h。我必须创建一个不同的 test.cpp 文件,以便稍后我可以使用我的 makefile 在终端中运行它。所以这只是一个起始 test.cpp 文件,我只是为了检查它是否有效:

#define DOCTEST_CONFIG_IMPLEMENT
#include "doctest.h"
#include "Weather.h"

using namespace std;

TEST_CASE("Random test") {
    Weather testt(10, 1, 0, "sunny");
    CHECK(testt.getAirTemperature() == 10);
}

这是我的makefile:

CC = g++
CFLAGS = -c -Wall

all: program

program: main.o Weather.o myException.o
    $(CC) main.o Weather.o myException.o -o program

main.o: main.cpp
    $(CC) $(CFLAGS) main.cpp

Weather.o: Weather.cpp
    $(CC) $(CFLAGS) Weather.cpp

myException.o: myException.cpp
    $(CC) $(CFLAGS) myException.cpp

build_test: test.o Weather.o myException.o
    $(CC) test.o Weather.o myException.o -o test.exe

test.o: test.cpp
    $(CC) $(CFLAGS) test.cpp

rebuild: clean all

clean:
    rm -rf *o program

您可以忽略除 build_testtest.o 部分之外的所有内容,因为当我在终端中键入 make all 时,它完美地为我创建了一个可执行文件。但是当我输入 make build_test 时,我得到一个这样的马戏团:D:/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/BLABLABLABLA: undefined reference to 'WinMain' collect2.exe: error: ld returned 1 exit status 是什么 WinMaincollect2.exe 终端只是告诉我我不知道我第一次听说那个exe。我不明白,我使 makefile 部分与正在运行的部分相同,并且我没有看到 test.cpp 有任何问题,因为我三重检查了测试的编写方式。 doctest.h 也包含在项目中。 (如果您想知道 myException.cpp 是什么,它只是包含在 Weather.cpp 中的我自己的类,用于处理 std::exception 未检测到的异常,所以我想我必须包含它由于它是 Weather 的一部分,因此也可以在 makefile 中加入我的测试。

0 个答案:

没有答案