Я пытаюсь заставить 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