Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Пример Makefile для компиляции с помощью gcc и MinGW оконного приложения на SDL2 и Си

Запись от 8Observer8 размещена 07.05.2020 в 02:30
Показов 3084 Комментарии 0
Метки c, mingw

Содержание блога

Исходники и EXE: rectangle-sdl2-clang.rar (406.6 Кб)

Покажу пример создания окна на SDL2, на котором будет рисоваться зелёный прямоугольник. Покажу, как подключать библиотеку и инклуды в простом Makefile для компиляции на Windows с помощью gcc.

Скачайте библиотеку SDL2-devel-2.0.12-mingw.tar.gz (MinGW 32/64-bit) (ссылка взята с официального сайта: https://www.libsdl.org/download-2.0.php). После разархиварования вы найдёте три каталога: "bin", "include", "lib".

Мне лично нравится скопировать один раз "SDL2.dll" из "bin" в "C:\Windows\SysWOW64". Если у вас 32 битная ОС, то в "C:\Windows\System32". Тогда не придётся каждый раз копировать в каждый свой пример "SDL2.dll", то если вы соберётесь отослать EXE другу, то нужно, чтобы рядом с EXE лежала динамическая библиотека "SDL2.dll".

Создайте каталог для своего проекта. Перейдите в него из консоли. Создайте файл Makefile и файл main.c и запустите команду: mingw32-make

Makefile

Code
1
2
3
4
5
6
7
8
9
10
CC = gcc
INC = -I"E:\Libs\SDL2-devel-2.0.12-mingw\include"
LIB = -L"E:\Libs\SDL2-devel-2.0.12-mingw\lib"
FLAGS = -c
 
all: main.o
    $(CC) main.o $(LIB) -lSDL2.dll -o app
 
main.o: main.c
    $(CC) $(FLAGS) $(INC) main.c
main.c

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#define SDL_MAIN_HANDLED
#include <stdbool.h>
#include <SDL.h>
 
int main()
{
    bool quit = false;
    SDL_Event event;
 
    SDL_Init(SDL_INIT_VIDEO);
 
    SDL_Window *window = SDL_CreateWindow("Прямоугольник",
                                          SDL_WINDOWPOS_CENTERED,
                                          SDL_WINDOWPOS_CENTERED,
                                          270, 270, 0);
    SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);
 
    SDL_Rect r;
    r.x = 50;
    r.y = 50;
    r.w = 100;
    r.h = 50;
 
    while (!quit)
    {
        SDL_WaitEvent(&event);
 
        switch (event.type)
        {
        case SDL_QUIT:
            quit = true;
            break;
        }
 
        SDL_SetRenderDrawColor(renderer, 0, 200, 0, 255);
        SDL_RenderFillRect(renderer, &r);
        SDL_RenderPresent(renderer);
    }
 
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
 
    return 0;
}
Изображения
 
Вложения
Тип файла: rar rectangle-sdl2-clang.rar (406.6 Кб, 1293 просмотров)
Метки c, mingw
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru