Makefile для компиляции gtkmm - PullRequest
0 голосов
/ 08 мая 2018

У меня есть приложение, которое использует Gtkmm для пользовательского интерфейса, и я могу скомпилировать его с помощью командной строки (сохраненной в скрипте), и я прочитал / попытался использовать Makefile для него. Смотрите ниже:

SRCDIR = src
BINDIR = bin

OBJECTS = $(SRCDIR)/Dependency_1.o $(SRCDIR)/Dependencies_2.o $(SRCDIR)/Dependencies_N.o $(SRCDIR)/Gtkmm_Definitions.o App_Gtkmm.o

GTKFLAGS = `pkg-config --cflags gtkmm-3.0`
LIBS = `pkg-config --libs gtkmm-3.0`

CXX = g++
CXXFLAGS = -Wall -pthread -mms-bitfields

debug: EXEC = App_Gtkmm_debug
debug: $(OBJECTS)
    $(CXX) $(CXXFLAGS) $(GTKFLAGS) -o $(BINDIR)/$(EXEC) $(OBJECTS) $(LIBS)

clean:
    rm $(SRCDIR)/*.o $(BINDIR)/App_Gtkmm*

Есть еще одна цель, которую я пропустил для простоты. Структура файла: Dependencies_X имеет определения классов, которые являются просто стандартными C ++; Gtkmm_Definitions.hpp / .cpp содержит объявления и определения, связанные с Gtkmm (здесь включен gtkmm.h), а App_Gtkmm.cpp - основная программа.

При запуске «make debug» он скомпилирует только часть исходных текстов в 1-й проход и остановится с некоторыми ошибками, которые исчезают, когда я запускаюсь во 2-й раз. Это уже кажется проблемой. Затем он остановится при попытке скомпилировать Gtkmm_Definitions, сказав, что не может найти gtkmm.h.

In file included from src/Gtkmm_Definitions.cpp:1:0:
src/Gtkmm_Definitions.hpp:1:10: fatal error: gtkmm.h: No such file or directory
 #include <gtkmm.h>
          ^~~~~~~~~
compilation terminated.
make: *** [<builtin>: src/Gtkmm_Definitions.o] Error 1

Однако эта командная строка компилируется без проблем:

g++ -Wall -pthread -mms-bitfields src/Dependencies_1.cpp src/Dependencies_N.cpp src/Gtkmm_Definitions.cpp App_Gtkmm.cpp -o bin/App_Gtkmm_debug `
pkg-config --cflags gtkmm-3.0 --libs gtkmm-3.0

Можете ли вы, ребята, заметить что-то не так в этом Makefile? Я уже попробовал множество переменных, меняющих порядок, конкатенацию и онлайн-советы здесь и там.

...