.PHONY: build/exe SDL_FLAGS=`pkg-config sdl2 SDL2_image --cflags --libs` FLAGS=-pthread -std=c++11 $(SDL_FLAGS) -Wall -Wextra CC=g++ $(FLAGS) CC_STATIC=$(CC) -fPIC CC_SHARED=g++ -shared CUR_DIR=$(shell pwd) # get list of '.o' files to be generated for 'build/include/libxsdl.so' target XSDL_O_FILES=$(shell ls -l xSDL/*.cpp | awk '{print $$NF}' | sed 's/^xSDL\/\(.\+\)\.cpp$$/build\/static\/\1.o/g') prepare: test -d build/ || mkdir build/ test -d build/static || mkdir build/static test -d build/include || mkdir build/include clean: test -d build/ && rm -r build/ || true run: LD_LIBRARY_PATH="$(CUR_DIR)/build/include/:$LD_LIBRARY_PATH" ./build/exe; # build executable build/exe: build/main.o build/include/libxsdl.so $(CC) -L$(CUR_DIR)/build/include/ -o $@ $< -lxsdl # xSDL lib static objects build/static/%.o: xSDL/%.cpp $(CC_STATIC) -c $^ -o $@ # xSDL shared (dynamic) library build/include/libxsdl.so: $(XSDL_O_FILES) $(CC_SHARED) -Wl,-soname,libxsdl.so -o $@ $^ # xMario lib build/xMario.o: xMario/*.cpp $(CC) -o $@ $^ # build main build/main.o: main.cpp $(CC) -o $@ -c $^