我写了Makefile以便更简单地运行单元测试(默认目标是测试)。目录结构如下:
lib
- 谷歌c ++测试框架
src
- 源文件
test
- 单元测试
在src
我有文件a.h
,a.cc
,b.cc
(其中包含主文件),我想测试在其中定义的类A()
a.h
。总而言之,因为链接的顺序是:
g++ -Wall -c -o obj/src/a.o src/a.cc
g++ -Wall -c -o obj/src/b.o src/b.cc
g++ -o all obj/src/a.o
我收到错误:
(.text+0x18): undefined reference to main'
collect2: ld returned 1 exit status
make: *** [all] Error
即使我实际上不需要在main()
中定义src
,因为我已经在main()
中定义了test
来运行单元测试。
答案 0 :(得分:4)
我不太清楚你想做什么,但是如果你的主要是在test.o中,你需要在你的链接线中指定。例如:
g++ -o all obj/src/a.o test.o
答案 1 :(得分:2)
当你说
时g++ -o all obj/src/a.o
g++
认为您已经要求它构建可执行文件,因此正在寻找入口点。大概你想要问别的东西(图书馆,也许?)。
答案 2 :(得分:0)
即使它无法解决您当前的问题,但知道您正在重新设计automake
可能会有所帮助。你现在不应该手工编写C或C ++项目的Makefile。