| ######################################################################## |
| ## Makefile for basic_application |
| ######################################################################## |
| |
| # turn on/off verbosity with 'make {all|release|debug|clean} VERBOSE=1'. Default is silent. |
| ifeq ($(VERBOSE),1) |
| ECHO := |
| else |
| ECHO := @ |
| endif |
| |
| # the compiler |
| CXX = g++ |
| |
| # target EXE |
| TARGET_DIR = . |
| TARGET = basic_application |
| |
| # Resource files |
| RES_TARGET = resources.C |
| RES_XML = .gresource.xml |
| |
| # the version of GTK being used |
| GTK_VERSION_NUM = 3.0 |
| |
| # the base directory of EZGL |
| EZGL_DIR = ../.. |
| |
| # get the source and header files for the application and from EZGL |
| SRCS = $(wildcard ./*.cpp ./$(RES_TARGET) $(EZGL_DIR)/src/*.cpp) |
| HDRS = $(wildcard ./*.h $(EZGL_DIR)/include/ezgl/*.hpp) |
| |
| # the GTK include directories. Runs "pkg-config --cflags gtk+-3.0" to get the include directories. |
| GTK_INCLUDE_DIRS := $(shell pkg-config --cflags gtk+-$(GTK_VERSION_NUM) x11) |
| |
| # the GTK libraries. Runs "pkg-config --libs gtk+-3.0" to get the libraries to include for GTK. |
| GTK_LIBS := $(shell pkg-config --libs gtk+-$(GTK_VERSION_NUM) x11) |
| |
| # set the include directories |
| INC_DIRS = $(EZGL_DIR)/include $(EZGL_DIR)/include/ezgl |
| |
| # compiler flags |
| CXX_FLAGS = -g -Wall -std=c++14 |
| |
| # GLIB resource compiler |
| GLIB_COMPILE_RESOURCES = $(shell pkg-config --variable=glib_compile_resources gio-2.0) |
| |
| # resource files |
| resources = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=. --generate-dependencies $(RES_XML)) |
| |
| # 'make all' target |
| all: $(RES_TARGET) $(TARGET_DIR)/$(TARGET) |
| |
| # create the exe |
| $(TARGET_DIR)/$(TARGET) : Makefile $(SRCS) |
| $(ECHO) $(CXX) $(CXX_FLAGS) $(foreach D,$(INC_DIRS),-I$D) $(GTK_INCLUDE_DIRS) $(SRCS) $(GTK_LIBS) -o $(TARGET_DIR)/$(TARGET) |
| |
| # create the resource file |
| $(RES_TARGET): $(RES_XML) $(resources) |
| $(ECHO) $(GLIB_COMPILE_RESOURCES) --sourcedir=. --generate-source $(RES_XML) --target=$(RES_TARGET) |
| |
| # clean the EXE |
| clean: |
| $(ECHO) rm -f $(TARGET_DIR)/$(TARGET) |
| $(ECHO) rm -f $(RES_TARGET) |
| |
| # 'make release' is the same as 'make all' but the -O3 flag is added |
| release: all |
| CXX_FLAGS += -O3 |
| |
| # 'make debug' is the same as 'make all'. Currently nothing is added here |
| debug: all |
| |
| |
| .PHONY: all release debug clean |