Проблемы со ссылками на Makefile - PullRequest
0 голосов
/ 17 сентября 2011

Я написал Makefile для более простого способа запуска модульных тестов (по умолчанию целью является test).Структура каталогов выглядит следующим образом:

lib - каркас тестирования google c ++

src - исходные файлы

test - модульные тесты

В src у меня есть файлы a.h, a.cc, b.cc (которые содержат main), и я хочу проверить класс 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, который выполняет модульные тесты.

Ответы [ 3 ]

4 голосов
/ 17 сентября 2011

Я не очень хорошо понимаю, что вы хотите сделать, но если ваш main находится, скажем, в test.o, вам нужно указать это в вашей ссылке. Например:

g++ -o all obj/src/a.o test.o
2 голосов
/ 17 сентября 2011

Когда вы говорите

g++ -o all obj/src/a.o

g++ думает, что вы попросили его создать исполняемый файл, и, соответственно, ищет точку входа. Предположительно, вы хотели спросить его о чем-то другом (может быть, о библиотеке).

0 голосов
/ 17 сентября 2011

Даже если это не решит вашу текущую проблему, может быть полезно знать, что вы реинжинирируете automake. Вы не должны писать Makefile для проектов на C или C ++ вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...