rb6*_*612 2 c++ linker makefile catch-unit-test
我编写了以下Makefile(它按预期工作):
CXX2 = clang++
CXXFLAG2 = -std=c++11 -c -g -O0 -Wall -Wextra
LD2 = clang++
LDFLAG2 = -std=c++11
testing: data_test.o test_main.o dataframe.o csvreader.o course.o
$(LD2) $^ $(LDFLAG2) -o $@
data_test.o: test/data_test.cpp
$(CXX2) $< $(CXXFLAG2)
test_main.o: test/test_main.cpp
$(CXX2) $< $(CXXFLAG2)
dataframe.o: src/DataFrame.cpp src/CSVReader.cpp src/Course.cpp
$(CXX2) $< $(CXXFLAG2)
Run Code Online (Sandbox Code Playgroud)
在我的test_main.cpp文件中,我只有以下几行:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
Run Code Online (Sandbox Code Playgroud)
我试着看看我的Makefile中是否可以替换测试规则,如下所示:
data_test.o: test/data_test.cpp test/test_main.cpp
$(CXX2) $< $(CXXFLAG2)
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个"_main", referenced from:
implicit entry/start for main executable错误.对我来说,它似乎应该工作正常,包括test_main.cpp作为我的实际测试的依赖.是否有理由将此主文件编译为自己的.o文件?
从制作手册:
$ <
第一个先决条件的名称.如果目标从隐式规则获得其配方,则这将是隐式规则添加的第一个先决条件(请参阅隐式规则).
因此,下面的规则编译data_test.cpp并且不编译test_main.cpp:
data_test.o: test/data_test.cpp test/test_main.cpp
$(CXX2) $< $(CXXFLAG2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |