3.8 KiB
title | date | draft | categories | featured_image | |
---|---|---|---|---|---|
FLTK - упрощаем себе жизнь с msys2 (часть 2) | 2023-01-07T19:46:00+03:00 | false |
|
thumb.png |
Собираем приложения на FLTK с помощью msys2 и CMake!
Предыдущая часть с установкой всего необходимого находится тут.
Вариант 1 - собираем приложение внутри msys2
Для CMake хорошим тоном является расположение директорию сборки вне директории проекта. Поэтому немного изменим структуру нашего проекта:
D:\code
├───build
└───fltk-app
├───CmakeLists.txt
└───main.cpp
Создаём CmakeLists.txt, который также будет поддерживать статическую сборку:
cmake_minimum_required(VERSION 3.2)
project(fltk-app)
option(STATIC_BUILD "Enable static build" ON)
# Ищем библиотеку fltk в системе
# При успешном поиске станут доступны переменные, описанные здесь:
# https://cmake.org/cmake/help/latest/module/FindFLTK.html
find_package(FLTK REQUIRED)
# Указываем исходные файлы проекта
add_executable(fltk-app main.cpp)
if(MINGW)
# Конфигурируем статическую сборку
if(STATIC_BUILD)
set(BUILD_SHARED_LIBS OFF)
set_target_properties(fltk-app PROPERTIES LINK_SEARCH_START_STATIC 1)
set_target_properties(fltk-app PROPERTIES LINK_SEARCH_END_STATIC 1)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
endif()
# Отключаем окно команд
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
endif()
# Добавляем путь к заготовкам 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.
Переходим в каталог сборки:
cd /d/code/build
Далее необходимо создать файлы для конкретной системы сборки. У нас это MSYS Makefiles:
cmake -G "MSYS Makefiles" /d/code/fltk-app
Затем собираем проект:
cmake --build .
Проверяем с помощью Dependencies, не появилось ли зависимостей:
Вариант 2 - собираем приложение вне msys2
Сборка через msys2 удобна тогда, когда у нас уже есть готовый проект. Однако когда речь идёт о разработке, то мало какая IDE позволит себе роскошь запускать сборку в окружении msys2. Чтобы избавиться от необходимости его использования, необходимо выполнить всего лишь...