Как собрать SDL2 с Makefile для Windows и Android - PullRequest
0 голосов
/ 10 января 2019

У меня есть следующий Makefile, который собирается для Linux:

CC := gcc
FLAGS := `sdl2-config --libs --cflags` -ggdb3 -O0 --std=c99 -lSDL2_image -lm -Wall
HDRS := $(wildcard src/c/*.h) 
SRCS := $(wildcard src/c/*.c)
OBJS := $(SRCS:src/c/%.c=tmp/%.o)
EXEC := out/PrehistoricWorld
#---------------------------------------------------------- test
FLAGS_TEST    := $(FLAGS)
SRCS_TEST     := $(wildcard test/c/*.c)
OBJS_TEST     := $(filter-out tmp/main.o, $(OBJS)) $(SRCS_TEST:test/c/%.c=tmp/%.o)
EXEC_TEST     := out/test

.SUFFIXES:
#---------------------------------------------------------- Targets

.PHONY: all

all: $(EXEC)

$(EXEC): $(OBJS) $(HDRS) Makefile
    $(CC) -o $@ $(OBJS) $(FLAGS) && echo "EXEC [OK]  $@"

# --------------------------------------------------------------

.PHONY: test

test: $(EXEC_TEST)

$(EXEC_TEST): $(OBJS_TEST)
    $(CC) -o $@ $(OBJS_TEST) $(FLAGS_TEST) && echo "EXEC_TEST [OK] $@"

# --------------------------------------------------------------

tmp/%.o: src/c/%.c
    @$(CC) $(FLAGS) -c $< -o $@ && echo "tmp/%.o: src/c/%.c [OK]  $@"

tmp/%.o: test/c/%.c
    @$(CC) $(FLAGS_TEST) -c $< -o $@ && echo "tmp/%.o: test/c/%.c [OK]  $@"

.PHONY: clean, clear

clean clear:
    @rm -f out/* && echo "[CL]  out/"
    @rm -f tmp/* && echo "[CL]  tmp/"

Используются библиотеки GCC, SDL2 и SDL2_image.

  1. Как создать приложение для Windows с помощью Makefile / Cmake - и как установить / установить необходимые зависимости в моей операционной системе - Ubuntu 18.0.4 для этой задачи?

  2. Как создать приложение для Android с помощью Makefile / Cmake - и как установить / установить необходимые зависимости в моей операционной системе - Ubuntu 18.0.4 для этой задачи?

РЕДАКТИРОВАТЬ:

1: я нашел способ установить / установить необходимые зависимости, следуя инструкциям, приведенным на этом сайте: ИСПОЛЬЗОВАНИЕ ПРЕДВАРИТЕЛЬНЫХ БИНАРИЙ MINGW ДЛЯ КРЕСТОВОГО СОСТАВЛЕНИЯ ПРИЛОЖЕНИЯ SDL2

Мне также удалось собрать с Makefile для платформы Windows, вот мой Makefile.win:

CC := x86_64-w64-mingw32-gcc
FLAGS := -lmingw32 -lSDL2main -lSDL2 -ggdb3 -O0 --std=c99 -lSDL2_image -lm  -Wall
HDRS := $(wildcard src/c/*.h) 
SRCS := $(wildcard src/c/*.c)
OBJS := $(SRCS:src/c/%.c=tmp/%.o)
EXEC := out/PrehistoricWorld
#---------------------------------------------------------- test
FLAGS_TEST    := $(FLAGS)
SRCS_TEST     := $(wildcard test/c/*.c)
OBJS_TEST     := $(filter-out tmp/main.o, $(OBJS)) $(SRCS_TEST:test/c/%.c=tmp/%.o)
EXEC_TEST     := out/test

.SUFFIXES:
#---------------------------------------------------------- Targets

.PHONY: all

all: $(EXEC)

$(EXEC): $(OBJS) $(HDRS) Makefile
    $(CC) -o $@ $(OBJS) $(FLAGS) && echo "EXEC [OK]  $@"

# --------------------------------------------------------------

.PHONY: test

test: $(EXEC_TEST)

$(EXEC_TEST): $(OBJS_TEST)
    $(CC) -o $@ $(OBJS_TEST) $(FLAGS_TEST) && echo "EXEC_TEST [OK] $@"

# --------------------------------------------------------------

tmp/%.o: src/c/%.c
    @$(CC) $(FLAGS) -c $< -o $@ && echo "tmp/%.o: src/c/%.c [OK]  $@"

tmp/%.o: test/c/%.c
    @$(CC) $(FLAGS_TEST) -c $< -o $@ && echo "tmp/%.o: test/c/%.c [OK]  $@"

.PHONY: clean, clear

clean clear:
    @rm -f out/* && echo "[CL]  out/"
    @rm -f tmp/* && echo "[CL]  tmp/"
  1. Как создать приложение для Android?
...