OpenGL и Linux: Установка и настройка Code::Blocks

  Дмитрий Бушуев  | 

  Обновл. 7 Сен 2021  | 

 23610

 ǀ   11 

На этом уроке мы рассмотрим установку и настройку Code::Blocks в Linux для работы с OpenGL, а также запустим проект, рассмотренный на предыдущем уроке.

Подготовительные шаги

Установка будет происходить на чистой системе debian-10.3.0-amd64 XFCE под VMware. Я не буду описывать сам процесс установки ОС, ограничусь лишь скриншотом итоговой конфигурации системы:

Также для данного проекта я в домашней папке своего пользователя создал каталог OpenGL_Project, полный путь к которому выглядит как /home/diego/OpenGL_Project/, где diego — это имя моего пользователя в системе. У вас оно наверняка будет другим. Учитывайте это!

На всякий случай избегайте кириллицы в путях и именах файлов.

Еще один момент: для установки новых пакетов в Linux я привык пользоваться программой aptitude, а не стандартной apt-get. Поэтому вы можете поступить следующим образом:

   Вариант №1: Установить aptitude, для этого в терминале выполните команду sudo apt-get install aptitude.

   Вариант №2: Можете пользоваться стандартной программой apt-get. Но учтите, что если по ходу данного туториала встречается установка пакета командой вроде sudo aptitude install НАЗВАНИЕ_ПАКЕТА, то в вашем варианте команда установки пакета должна выглядеть как sudo apt-get install НАЗВАНИЕ_ПАКЕТА.

Установка GLFW в Linux


Скачиваем GLFW с оф. сайта:

Распаковываем скачанный архив в папку /home/diego/OpenGL_Project/, я пользуюсь архиватором Xarchiver:

Указываем необходимую нам папку:

Видим получившуюся распакованную папку glfw-3.3.2:


Установка CMake в Linux

Теперь необходимо поставить систему сборки проектов CMake. Для этого в окне терминала выполните следующую команду:

sudo aptitude install cmake-gui

Запускаем CMake:

Указываем папку с исходниками GLFW и вторую папку, где должен будет появиться результат работы CMake (у себя для этого я создал папку build), и нажимаем кнопку "Configure":

В появившемся окне выбираем пункт "CodeBlocks – Unix Makefiles" и нажимаем кнопку "Finish":

В результате видим… кучу ошибок (добро пожаловать в мир Linux):

Нажимаем "ОК", снова возвращаемся в терминал и устанавливаем пакет xorg-dev:

sudo aptitude install xorg-dev

Возвращаемся в CMake и выставляем галочки так, как показано ниже:

И снова нажимаем кнопку "Configure" (дважды), а потом кнопку "Generate". Видим сообщения об успешном конфигурировании и сборке проекта:

В результате, в папке build у нас должен появиться файл проекта GLFW.cbp:


Установка Code::Blocks в Linux


Пришло время установить среду программирования Code::Blocks. Для этого возвращаемся в терминал и вводим следующую команду:

sudo aptitude install codeblocks

После установки иконка файла проекта поменяет свой внешний вид:

Открываем данный файл, в результате чего будет запущен Code::Blocks, и появится окно с выбором компиляторов. В системе должен присутствовать как минимум один компилятор — GNU GCC Compiler. Жмем "ОК":

Открывается окно проекта, нажимаем на шестеренку и компилируем его:

После этого в папке build/src должен появиться скомпилированный файл библиотеки libglfw3.a:


Установка GLAD в Linux

Заходим на оф. сайт GLAD и указываем следующие настройки, после чего нажимаем кнопку "Generate":

В результате нам будет предложено скачать архив glad.zip:

Далее, чтобы внести немного порядка и организованности в наш будущий проект, поместите папки include и src, содержащиеся в данном архиве, в папку /home/diego/OpenGL_Project/.

Затем скопируйте папку /home/diego/OpenGL_Project/glfw-3.3.2/include/GLFW в папку /home/diego/OpenGL_Project/include/.

Также создайте папку lib в /home/diego/OpenGL_Project/ и скопируйте в нее файл скомпилированной библиотеки libglfw3.a.

В итоге у вас должна получиться примерно следующая картина иерархии папок и файлов:


Создание проекта в Code::Blocks


Запускаем Code::Blocks и создаем новый пустой проект: "File" > "New" > "Project…", выбираем "Empty Project" и нажимаем кнопку "Go":

Затем нажимаем кнопку "Next":

Задаем имя проекту. Я назвал его CodeBlocks и выбрал папку /home/diego/OpenGL_Project/:

В следующем окне должны быть следующие настройки:

Теперь скопируйте файл glad.c из папки /home/diego/OpenGL_Project/src/ в папку с проектом /home/diego/OpenGL_Project/CodeBlocks/.

Также создайте файл main.cpp в папке /home/diego/OpenGL_Project/CodeBlocks/.

Затем эти два файла нужно будет добавить в наш проект. Для этого вернемся обратно в Code::Blocks, нажмем правой кнопкой мыши на название нашего проекта и выберем пункт "Add files…":

Добавляем в проект файлы glad.c и main.cpp:

Настало время подключить необходимые папки с заголовочными файлами и библиотеки, а также настроить компилятор и линкер. Для этого в Code::Blocks переходим в "Project" > "Build options…":

Переходим на вкладку "Linker settings" и настраиваем её следующим образом:

Примечание: В правом окошке "Other linker options" необходимо указать следующие параметры:

-lglfw3 -ldl -lX11 -lpthread -lm -lXrandr -lXi

Затем добавим дополнительные пути для поиска заголовочных и библиотечных файлов. Для этого переходим в "Search directories" > "Compiler":

Затем подобные действия проделываем и для вкладки "Linker", указывая путь к папке lib:


Запускаем наш проект в Code::Blocks

Теперь откройте файл main.cpp и скопируйте в него следующий код, рассмотренный на уроке №3:

Всё готово к тому, чтобы скомпилировать наш проект. Но мы же с вами используем Linux, и это было бы слишком просто. Если вы попробуете собрать текущий проект, то снова получите сообщения об ошибках. А чтобы избежать подобной ситуации, необходимо доустановить пакет g++:

sudo aptitude install g++

Теперь можно нажать на шестерёнку и скомпилировать проект. Можно увидеть, как в папке bin/Debug/ создался исполняемый файл с названием CodeBlocks:

Всё готово к запуску. Нажав на стрелочку, видим результат наших трудов — окно, залитое серо-зелено-голубым цветом. Именно так, как и было описано на уроке по созданию окна в OpenGL:

На этом всё! До следующего урока!

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (19 оценок, среднее: 4,89 из 5)
Загрузка...

Комментариев: 11

  1. Igor:

    Имею такую ошибку в терминале:
    "sh: 1: LD_LIBRARY_PATH=:.:../lib: not found
    "

    Что делать?

  2. Евгений:

    Всем доброго дня я знаю способ сделать это все намного быстрее.
    Для начала нам нужно скачать необходимые пакеты слудующей командой в терминале:

    sudo apt-get install libglfw3-dev libglfw3 libglew-dev libglew2.1 libglm-dev

    (glm позже пригодится)
    после этого создаем новый проект.
    Далее переходим в:
    Project->Build options->linker settings
    и в "Other linker options" вводим:

    -lGL -lGLEW -lglfw

    Вам не нужно будет таскать с собой glad.c потому что в glew этого не надо, но подключение и инициплизация у glew отличаются от glad
    подключение:

    инициализация:

    Если проект собирается, но не запускается, то перейдите в Settings->General Settings
    и поменяйте "Terminal to launch console programs" на какой-нибудь
    другой.
    Всем удачи

  3. Артем:

    У меня Code::Blocks на Manjaro (Arch) отказывался запускать даже "Hello world" — лечится путем подбора другой консоли в настройках: Settings->Environment->Terminal to launch programs: (Выбираем любую другую консоль, хотя бы одна из них должна заработать)

    1. Юрок:

      У меня arch, тоже не запустилось. Я прямм из консоли запускал. Спасибо за совет, сменил консоль, всё запустилось…

  4. Андрей:

    Вопрос — а зачем всё это мучение с CMake для GLFW? Можно просто поставить пакет glfw и использовать заголовочные файлы от него (в репозиториях большинства дистрибутивов версия > 3. Но во флагах gcc нужно указать не -lglfw3 а -lglfw.

  5. Никита:

    Спасибо!
    Но все заработало только тогда, когда я перешел в папку glfw-3.3.2/build и написал в терминале make
    c кодблоком файл libglfw3.a не появлялся

  6. Николай:

    Здравствуйте. А зачем ставить GLAD прямо в проект, почему не установить всё как динамическую библиотеку в /usr/local/lib и usr/local/include, чтобы можно было в любом проекте спокойно линковаться?

    1. Андрей:

      В Linux так делать не рекомендуется, так как в таком случае пакетный менеджер не знает о существовании данных файлов (но именно он всеми файлами здесь и управляет). А если будет несколько версий glad для разных проектов? Плюс не везде есть права суперпользователя, а для изменения папки /usr/* они нужны.

    2. Lodi:

      Потому, что glad генерировался именно для етого проекта

  7. Иван Сотников:

    Работает!
    Дмитрий Бушуев, огромное спасибо! 🙂

    1. Фото аватара Дмитрий Бушуев:

      Пожалуйста 🙂

Добавить комментарий для Иван Сотников Отменить ответ

Ваш E-mail не будет опубликован. Обязательные поля помечены *