SDL: сборка с помощью make
Содержание:
1. Введение;
2. Установка SDL;
3.Сборка с помощью make (Вы читаете данный раздел);
4. Распространение SDL-программы.
Приведу минимальный makefile для компиляции одного только файла - test.cpp. Замечу, что SDL любит, когда функция main объявлена с параметрами, а не просто int main(). То есть правильным будет нечто вроде:
Полезно изучить вывод команды в консоли MinGW (в консоли Windows скрипт sdl-config просто не сработает):
Это даст вам понятие о флагах, которые нужны для сборки SDL-программ под Windows. В частности, в некоторых случаях надо переопределять для исходника название функции main, передавая компилятору параметр:
Напишем makefile. Напомню, что в makefile, в отступах вместо пробелов обязательно (!) используется табуляция. Также напомню, что в значениях LIBS и FLAGS ниже не одинарные кавычки, а тильды. Итак, makefile:
По сути, этого makefile (если изменять в нем имена исходных файлов) достаточно для сборки любого примера из каталога test исходника SDL. Не забывайте, что в тех примерах надо подключения заголовков изменить, добавив SDL/ к каждому SDL.h.
Кроме того, после обращения к sdl-config прописано -lSDL_image -lSDL_ttf -lSDL_mixer, что обеспечит для компилируемой программы линковку с указанными библиотеками: SDL_Image, SDL_Mixer, SDL_Ttf.
Приведу файл SConstruct для Scons - с его помощью можно собрать целую программу, состоящую из одного и более файлов (в примере для make мы ограничились только одним файлом исходника).
Чтобы не делать в коде SConstruct каких-либо переключателей для различных систем, советую писать по варианту SConstruct для каждой системы и добавлять к имени файла расширение. Например SConstruct.lin - файл SConstruct для Linux, а SConstruct.win - для Windows. Потом просто передаем scons нужный файл:
Итак, вот SConstruct.win:
Итогом станет сборка исходников в текущем каталоге в файл game.exe. Обратите внимание, что важен порядок указания линовки библиотек в переменной LIBS, а также важны все добавленные флаги.
Пока изучали SDL, успели проголодаться, как волк? Значит, Вам следует как можно скорее изучить бизнес ланч меню (http://www.restoranmenu.ru/biznes-lanchi.html) и приступить к трапезе. Сделать это Вы сможете на сайте www.restoranmenu.ru, где представлены меню всех ресторанов и кафе вашего города!
1. Введение;
2. Установка SDL;
3.
4. Распространение SDL-программы.
Этап 4. Сборка с помощью make
Приведу минимальный makefile для компиляции одного только файла - test.cpp. Замечу, что SDL любит, когда функция main объявлена с параметрами, а не просто int main(). То есть правильным будет нечто вроде:
int main (int argc, char *argv[])
Полезно изучить вывод команды в консоли MinGW (в консоли Windows скрипт sdl-config просто не сработает):
sdl-config --libs --cflags
Это даст вам понятие о флагах, которые нужны для сборки SDL-программ под Windows. В частности, в некоторых случаях надо переопределять для исходника название функции main, передавая компилятору параметр:
-Dmain=SDL_main
Напишем makefile. Напомню, что в makefile, в отступах вместо пробелов обязательно (!) используется табуляция. Также напомню, что в значениях LIBS и FLAGS ниже не одинарные кавычки, а тильды. Итак, makefile:
TARGET = test
LIBS = 'sdl-config --libs4 -lSDL_image -lSDL_ttf -lSDL_mixer
CFLAGS = -03 'sdl-config --cflags4
CC = g++
all:
$(CC) $(CFLAGS) -c test.cpp -o test.o
$(CC) -o $(TARGET) test.o $(LIBS)
clean:
rm *.o
rm $(TARGET)
LIBS = 'sdl-config --libs4 -lSDL_image -lSDL_ttf -lSDL_mixer
CFLAGS = -03 'sdl-config --cflags4
CC = g++
all:
$(CC) $(CFLAGS) -c test.cpp -o test.o
$(CC) -o $(TARGET) test.o $(LIBS)
clean:
rm *.o
rm $(TARGET)
По сути, этого makefile (если изменять в нем имена исходных файлов) достаточно для сборки любого примера из каталога test исходника SDL. Не забывайте, что в тех примерах надо подключения заголовков изменить, добавив SDL/ к каждому SDL.h.
Кроме того, после обращения к sdl-config прописано -lSDL_image -lSDL_ttf -lSDL_mixer, что обеспечит для компилируемой программы линковку с указанными библиотеками: SDL_Image, SDL_Mixer, SDL_Ttf.
Этап 5. Сборка с помощью Scons
Приведу файл SConstruct для Scons - с его помощью можно собрать целую программу, состоящую из одного и более файлов (в примере для make мы ограничились только одним файлом исходника).
Чтобы не делать в коде SConstruct каких-либо переключателей для различных систем, советую писать по варианту SConstruct для каждой системы и добавлять к имени файла расширение. Например SConstruct.lin - файл SConstruct для Linux, а SConstruct.win - для Windows. Потом просто передаем scons нужный файл:
scons -f SConstruct.win
Итак, вот SConstruct.win:
import glob import os
env = Environment()
SOURCES = glob.glob('*.cpp')
env.Append(CCFLAGS = ['-g', '-Wall'])
env.Append(LIBS = ['mingw32', 'SDLMain', 'SDL',
'SDL_image', 'SDL_mixer', 'SDL_ttf'])
env.MergeFlags('-mwindows')
env.MergeFlags('-I/usr/local/include/SDL
-D_GNU_S0URCE=1 -Dmain=SDL_main')
env.Program(target = 'game', source = SOURCES)
env = Environment()
SOURCES = glob.glob('*.cpp')
env.Append(CCFLAGS = ['-g', '-Wall'])
env.Append(LIBS = ['mingw32', 'SDLMain', 'SDL',
'SDL_image', 'SDL_mixer', 'SDL_ttf'])
env.MergeFlags('-mwindows')
env.MergeFlags('-I/usr/local/include/SDL
-D_GNU_S0URCE=1 -Dmain=SDL_main')
env.Program(target = 'game', source = SOURCES)
Итогом станет сборка исходников в текущем каталоге в файл game.exe. Обратите внимание, что важен порядок указания линовки библиотек в переменной LIBS, а также важны все добавленные флаги.
Пока изучали SDL, успели проголодаться, как волк? Значит, Вам следует как можно скорее изучить бизнес ланч меню (http://www.restoranmenu.ru/biznes-lanchi.html) и приступить к трапезе. Сделать это Вы сможете на сайте www.restoranmenu.ru, где представлены меню всех ресторанов и кафе вашего города!