76 lines
2.2 KiB
Makefile
76 lines
2.2 KiB
Makefile
|
########################################################################
|
||
|
## 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
|