UnitTest++ и g++ — относительный путь к библиотеке

Я пытаюсь заставить UnitTest++ работать в проекте, следующем за этим деревом каталогов:

Project/
|-- src/
|-- test/
|   |-- test.cpp
|-- unittest-cpp/
|   |-- UnitTest++/
|       |-- libUnitTest++.a
|       |-- src/
|            |-- UnitTest++.h
|-- Makefile

Я пытаюсь скомпилировать с помощью g++, находясь в каталоге Project. Мой файл test.cpp содержит код для начала работы с UnitTest++.

Я пробовал следующее:

g++ -Lunittest-cpp/UnitTest++/ -lUnitTest++ -Iunittest-cpp/UnitTest++/src/ \
test/test.cpp -o Test

Если я правильно понимаю, -L должен указать путь к статической библиотеке. -l (маленькая L) для имени библиотеки и -I (заглавная i) для включаемого пути.

Я получаю два разных результата. Он либо говорит мне, что не может найти библиотеку в /usr/bin/??? или он говорит мне, что есть неопределенные ссылки на unittest::*.

Это потому, что я указываю относительный путь к библиотеке, которую она не может скомпилировать? Я новичок в использовании g++ через несколько каталогов, и я пытаюсь понять, как это работает, прежде чем заставить его работать в моем Makefile.

[РЕДАКТИРОВАТЬ]: параметр test/test.cpp должен был быть указан перед связыванием библиотек и заголовков. Итак, это сработало:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test

person Guillaume Rochat    schedule 12.02.2013    source источник


Ответы (1)


Файл для компиляции (в данном контексте test.cpp) должен быть указан перед его зависимостями при компиляции. Это сработало:

g++ test/test.cpp -Lunittest-cpp/UnitTest++ -lUnitTest++ -Iunittest-cpp/UnitTest++/src -o Test
person Guillaume Rochat    schedule 01.07.2013