######################################################################## ## 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