--- title: "FLTK - упрощаем себе жизнь с msys2 (часть 2)" date: 2023-01-07T19:46:00+03:00 draft: false categories: ["cpp"] featured_image: thumb.png --- Собираем приложения на FLTK с помощью msys2 и [CMake](https://cmake.org)! Предыдущая часть с установкой всего необходимого находится [тут](/fltk-msys2). ## Вариант 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) # Ищем библиотеку 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. Переходим в каталог сборки: ```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) Проверяем с помощью [Dependencies](https://github.com/lucasg/Dependencies), не появилось ли зависимостей: ![depends](depends.png) ## Вариант 2 - собираем приложение вне msys2 Сборка через msys2 удобна тогда, когда у нас уже есть готовый проект. Однако когда речь идёт о разработке, то мало какая IDE позволит себе роскошь запускать сборку в окружении msys2. Чтобы избавиться от необходимости его использования, необходимо выполнить всего лишь...