У меня есть следующий 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.
Как создать приложение для Windows с помощью Makefile / Cmake - и как установить / установить необходимые зависимости в моей операционной системе - Ubuntu 18.0.4 для этой задачи?
Как создать приложение для 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/"
- Как создать приложение для Android?