Вы указываете каталог включения для jsoncpp в своей переменной LDFLAGS
, но они не используются, пока вы уже не скомпилировали отдельные файлы cpp. Вам нужно поместить деталь -I src/jsoncpp-src-0.5.0/include
где-нибудь во флаги, которые добавляются в строки компиляции, такие как CXXFLAGS
.
Чтобы немного расширить, вы используете неявные правила Make для создания ваших отдельных .cpp
файлов, тогда у вас есть конкретная цель для построения приложения из этих объектов.
См. GNU Make Каталог правил для получения дополнительной информации, но тот, который вы используете, находится здесь:
Компиляция программ на C ++
n.o производится автоматически из n.cc, n.cpp или n.C с рецептом вида $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
. Мы рекомендуем вам использовать суффикс ".cc" для исходных файлов C ++ вместо ".C".
Редактировать : Теперь ваши ошибки связывания.
Вы получаете эти проблемы, потому что компоновщик не может найти фактические реализации функций, которые вы вызываете.
Во-первых, ваша директива -L
должна указывать на папку, а не на библиотеку. -L
устанавливает путь поиска для библиотек. Следует указать папку, в которой была создана библиотека для сборки jsoncpp. Далее необходимо связать саму библиотеку. Это имя библиотеки гигантское, но добавление -l json_linux-gcc-4.5.1_libmt
к LDFLAGS
должно помочь. -l
(это нижний предел) устанавливает фактическую библиотеку для связи.