问题描述
所以我有一个简单的工人阶级天气。我制作了一个有效的 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,"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_test
和 test.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
是什么 WinMain
和 collect2.exe
终端只是告诉我我不知道我第一次听说那个exe。我不明白,我使 makefile 部分与正在运行的部分相同,并且我没有看到 test.cpp
有任何问题,因为我三重检查了测试的编写方式。 doctest.h
也包含在项目中。 (如果您想知道 myException.cpp
是什么,它只是包含在 Weather.cpp
中的我自己的类,用于处理 std::exception
未检测到的异常,所以我想我必须包含它由于它是 Weather
的一部分,因此也可以在 makefile 中加入我的测试。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)