Я должен установить какое-то подходящее программное обеспечение из источника; программное обеспечение называется XMBF (http://www.stefanmeinel.com/software/XMBF/). Поставляется с исходным кодом - это make-файл, но не файл конфигурации. В руководстве говорится, что мне, скорее всего, потребуется изменить переменную «INCPATH» в Makefile в зависимости от используемой машины; Я пробовал это, но все еще получаю ошибки, такие как этот:
/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 не может найти заголовочный файл. Означает ли это, что я должен идти в каждый .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)
You вероятно, обнаружит, что вам также необходимо изменить фактическое правило ссылки для исполняемой цели, так что библиотеки находятся справа от объектных файлов:
$(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS)
Этого было достаточно, чтобы заставить его строить мой блок 16.10 с по умолчанию gcc-6 - на Ubuntu 16.04 с по умолчанию gcc-5.x вам может потребоваться указать компилятору возможности C ++ 11, например make "CXXFLAGS=-std=gnu++11".
Вероятно, самое легкое - позволить 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)
You вероятно, обнаружит, что вам также необходимо изменить фактическое правило ссылки для исполняемой цели, так что библиотеки находятся справа от объектных файлов:
$(LINK) -o $(TARGET) $(OBJECTS) $(LFLAGS) $(LIBS)
Этого было достаточно, чтобы заставить его строить мой блок 16.10 с по умолчанию gcc-6 - на Ubuntu 16.04 с по умолчанию gcc-5.x вам может потребоваться указать компилятору возможности C ++ 11, например make "CXXFLAGS=-std=gnu++11".