Я, как предполагается, устанавливаю некоторое подходящее программное обеспечение из источника; программное обеспечение называют XMBF (http://www.stefanmeinel.com/software/XMBF/). Предоставленный исходным кодом make-файл, но никакой файл конфигурации. В руководстве говорится, что я должен буду, скорее всего, отредактировать переменную "INCPATH" в Make-файле в порядке в зависимости от машины, которую я использую; я попробовал это, но все еще получаю ошибки, такие как этот:
/usr/include/glibmm-2.4/glibmm/ustring.h:24:26: fatal error:
glibmmconfig.h: No such file or directory
compilation terminated.
Makefile:279: recipe for target 'main.o' failed
make: *** [main.o] Error 1
которые указывают, что .cpp не может определить местоположение headerfile. Это означает, что я должен перейти к каждому .cpp файлу и отредактировать пути заголовочного файла? Или есть ли более легкий способ сделать это? Я являюсь прилично новым в этом материале, таким образом, я был бы очень признателен за любые ссылки, которые могли помочь мне изучить, как работают установки из источников. Или это устанавливает от "двоичного файла?" Я не уверен в различии.
Спасибо!
- Jacob
Вероятно, самая легкая вещь состоит в том, чтобы позволить pkg-config
, делают работу для Вас:
INCPATH := $(shell pkg-config --cflags libxml++-2.6 glibmm-2.4)
можно сделать подобную вещь для библиотек:
LIBS := $(shell pkg-config --libs libxml++-2.6 glibmm-2.4 sigc++-2.0 gsl)
Вы, вероятно, найдете, что также необходимо изменить фактическое правило ссылки для исполняемой цели, так, чтобы библиотеки были направо от объектных файлов:
$(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS)
, Которого было достаточно, чтобы заставить это основываться на моих 16,10 полях со значением по умолчанию gcc-6
- на Ubuntu 16.04 со значением по умолчанию gcc-5.x
, Вы, возможно, должны дать компилятору команду использовать C++ 11 функций, например, make "CXXFLAGS=-std=gnu++11"
.