Обновление статьи о fltk
This commit is contained in:
parent
8f2ca5058e
commit
8b77a9a90a
BIN
content/posts/fltk-msys2-cmake/cmake-msys-build.png
Normal file
BIN
content/posts/fltk-msys2-cmake/cmake-msys-build.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
BIN
content/posts/fltk-msys2-cmake/cmake-msys-gen.png
Normal file
BIN
content/posts/fltk-msys2-cmake/cmake-msys-gen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
BIN
content/posts/fltk-msys2-cmake/cmake-msys-ldd.png
Normal file
BIN
content/posts/fltk-msys2-cmake/cmake-msys-ldd.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.8 KiB |
@ -6,11 +6,17 @@ categories: ["cpp"]
|
|||||||
featured_image: thumb.png
|
featured_image: thumb.png
|
||||||
---
|
---
|
||||||
|
|
||||||
Обновление статейки по созданию [приложений на FLTK](/fltk-apps), так как нынче всё стало проще.
|
Обновление статейки по созданию [приложений на FLTK](/fltk-apps), так как нынче установка
|
||||||
|
библиотек и компилятора стала проще.
|
||||||
|
|
||||||
<!--more-->
|
<!--more-->
|
||||||
|
|
||||||
# Часть первая – установка msys2
|
Содержание:
|
||||||
|
|
||||||
|
{{< toc >}}
|
||||||
|
|
||||||
|
## Часть первая – установка msys2
|
||||||
|
|
||||||
|
|
||||||
Начнём. Скачиваем установщик msys2 с [официального сайта](https://www.msys2.org):
|
Начнём. Скачиваем установщик msys2 с [официального сайта](https://www.msys2.org):
|
||||||
|
|
||||||
@ -31,7 +37,7 @@ pacman -Syu
|
|||||||
|
|
||||||
![update-phase-1](update-phase-1.png)
|
![update-phase-1](update-phase-1.png)
|
||||||
|
|
||||||
Снова выполяем
|
Снова выполняем:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -Syu
|
pacman -Syu
|
||||||
@ -43,13 +49,13 @@ pacman -Syu
|
|||||||
|
|
||||||
Готово! msys2 и его компоненты теперь последней версии и готовы к работе.
|
Готово! msys2 и его компоненты теперь последней версии и готовы к работе.
|
||||||
|
|
||||||
# Часть вторая – установка инструментария разработчика
|
## Часть вторая – установка инструментария разработчика
|
||||||
|
|
||||||
Осталось установить компилятор, базовые инструменты для компиляции, cmake, fltk.
|
Осталось установить компилятор, базовые инструменты для компиляции, cmake, fltk.
|
||||||
|
|
||||||
Мне кажется, если вы выбрали fltk, то вас интересует поддержка старых машин. Поэтому устанавливаем 32-битные версии компилятора и библиотек. Если вас интересует платформа x64, то вместо **i686** в названиях пакетов используйте **x86_64** (например, mingw-w64-**x86_64**-fltk).
|
Мне кажется, если вы выбрали fltk, то вас интересует поддержка старых машин. Поэтому устанавливаем 32-битные версии компилятора и библиотек. Если вас интересует платформа x64, то вместо **i686** в названиях пакетов используйте **x86_64** (например, mingw-w64-**x86_64**-fltk).
|
||||||
|
|
||||||
Выполняем
|
Выполняем:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -S base-devel mingw-w64-i686-gcc mingw-w64-i686-cmake mingw-w64-i686-fltk
|
pacman -S base-devel mingw-w64-i686-gcc mingw-w64-i686-cmake mingw-w64-i686-fltk
|
||||||
@ -57,11 +63,11 @@ pacman -S base-devel mingw-w64-i686-gcc mingw-w64-i686-cmake mingw-w64-i686-fltk
|
|||||||
|
|
||||||
![install-devtools](install-devtools.png)
|
![install-devtools](install-devtools.png)
|
||||||
|
|
||||||
# Часть третья - пишем и собираем приложения
|
## Часть третья - пишем и собираем приложения
|
||||||
|
|
||||||
## Код
|
### Пример приложения
|
||||||
|
|
||||||
В этот раз будет программа, считающая нажатия на кнопку.
|
В этот раз будет программа, считающая нажатия на кнопку:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
@ -122,7 +128,7 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Сборка напрямую
|
### Сборка напрямую
|
||||||
|
|
||||||
Для начала пробуем всё собрать напрямую компилятором, без систем сборки. Мой проект находится в D:/code. Поэтому нужно перейти в этот каталог.
|
Для начала пробуем всё собрать напрямую компилятором, без систем сборки. Мой проект находится в D:/code. Поэтому нужно перейти в этот каталог.
|
||||||
|
|
||||||
@ -159,6 +165,91 @@ ldd main.exe
|
|||||||
|
|
||||||
![app](app.gif)
|
![app](app.gif)
|
||||||
|
|
||||||
## Сборка через cmake
|
### Сборка через CMake
|
||||||
|
|
||||||
|
#### Вариант 1 - внутри msys2
|
||||||
|
|
||||||
|
Для cmake хорошим тоном является создавать директорию сборки вне директории проекта. Поэтому немного изменим структуру нашего проекта:
|
||||||
|
|
||||||
|
```
|
||||||
|
D:\code
|
||||||
|
├───build
|
||||||
|
└───fltk-app
|
||||||
|
├───CmakeLists.txt
|
||||||
|
└───main.cpp
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём CmakeLists.txt, который также будет поддерживать статическую сборку:
|
||||||
|
|
||||||
|
```cmake
|
||||||
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
|
||||||
|
project(fltk-app)
|
||||||
|
|
||||||
|
option(STATIC_BUILD "Enable static build" ON)
|
||||||
|
|
||||||
|
# Конфигурируем статическую сборку для mingw
|
||||||
|
if(STATIC_BUILD AND MINGW)
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "-static -mwindows")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Ищем библиотеку fltk в системе
|
||||||
|
# При успешном поиске станут доступны переменные, описанные здесь:
|
||||||
|
# https://cmake.org/cmake/help/latest/module/FindFLTK.html
|
||||||
|
find_package(FLTK REQUIRED)
|
||||||
|
|
||||||
|
# Указываем исходные файлы проекта
|
||||||
|
add_executable(fltk-app main.cpp)
|
||||||
|
|
||||||
|
# Добавляем путь к заготовкам fltk для компиляции (в случаях, когда они находятся в произвольном месте)
|
||||||
|
target_include_directories(fltk-app PUBLIC ${FLTK_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
# Подключаем библиотеки
|
||||||
|
target_link_libraries(fltk-app ${FLTK_BASE_LIBRARY})
|
||||||
|
|
||||||
|
# Также добавляем необходимые библиотеки при сборке на windows
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(fltk-app comctl32)
|
||||||
|
endif()
|
||||||
|
```
|
||||||
|
|
||||||
|
> Файл проекта пока что адаптирован только для windows.
|
||||||
|
|
||||||
|
Переходим в каталог сборки:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /d/code/build
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее необходимо создать файлы для конкретной системы сборки. У нас это **MSYS Makefiles**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake -G "MSYS Makefiles" /d/code/fltk-app
|
||||||
|
```
|
||||||
|
|
||||||
|
![cmake-msys-gen](cmake-msys-gen.png)
|
||||||
|
|
||||||
|
Затем собираем проект:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake --build .
|
||||||
|
```
|
||||||
|
|
||||||
|
![cmake-msys-build](cmake-msys-build.png)
|
||||||
|
|
||||||
|
Проверяем, не появилось ли зависимостей:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ldd /d/code/build/fltk-app.exe
|
||||||
|
```
|
||||||
|
|
||||||
|
![cmake-msys-ldd](cmake-msys-ldd.png)
|
||||||
|
|
||||||
|
#### Вариант 2 - вне msys2
|
||||||
|
|
||||||
|
Сборка через msys2 удобна тогда, когда у нас уже есть готовый проект.
|
||||||
|
Однако когда речь идёт о разработке, то мало какая IDE позволит себе роскошь запускать сборку в окружении msys2.
|
||||||
|
Чтобы избавиться от необходимости его использования, необходимо выполнить всего лишь...
|
||||||
|
|
||||||
скоро будет
|
|
||||||
|
Loading…
Reference in New Issue
Block a user