{"id":22328083,"url":"https://github.com/umbrellaleaf5/simple_cmake_guide","last_synced_at":"2026-02-08T08:09:22.393Z","repository":{"id":261284008,"uuid":"883823723","full_name":"UmbrellaLeaf5/simple_cmake_guide","owner":"UmbrellaLeaf5","description":"CMake build system using guide (with examples) for first grade students MIPT DAFE/RSE","archived":false,"fork":false,"pushed_at":"2024-12-04T17:18:00.000Z","size":1056,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T06:29:50.256Z","etag":null,"topics":["cmake","cmakelists","dafe","education","mipt"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UmbrellaLeaf5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-05T16:27:21.000Z","updated_at":"2025-02-07T16:08:23.000Z","dependencies_parsed_at":"2025-03-26T06:37:03.499Z","dependency_job_id":null,"html_url":"https://github.com/UmbrellaLeaf5/simple_cmake_guide","commit_stats":null,"previous_names":["umbrellaleaf5/simple_cmake_guide"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2Fsimple_cmake_guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2Fsimple_cmake_guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2Fsimple_cmake_guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2Fsimple_cmake_guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UmbrellaLeaf5","download_url":"https://codeload.github.com/UmbrellaLeaf5/simple_cmake_guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248563840,"owners_count":21125363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","cmakelists","dafe","education","mipt"],"created_at":"2024-12-04T03:11:35.180Z","updated_at":"2026-02-08T08:09:17.348Z","avatar_url":"https://github.com/UmbrellaLeaf5.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple CMake Guide\n\nЭтот репозиторий представляет собой небольшой гайд по использованию [CMake](https://cmake.org) и различных его фишек в учебных проектах для студентов первого курса МФТИ ФАЛТ ([ПИШ РПИ](https://mipt-rse.ru)). \n\nГайд написан другим студентом, а потому может содержать ошибки, неточности, непрофессиональную лексику и т.п.\n\nУбедительная просьба отнестись с понимаем и обо всём таком писать в [`Issues`](https://github.com/UmbrellaLeaf5/simple_cmake_guide/issues) :)\n\n## Contents\n  * [CMake configuring in VS Code](#cmake-configuring-in-vs-code)\n  * [Repo configuring recommendations](#repo-configuring-recommendations)\n  * [Example 1: Hello World!](#example-1-hello-world)\n  * [Example 2: Stroustrup calculator](#example-2-stroustrup-calculator)\n  * [Example 3: Using Eigen library](#example-3-using-eigen-library)\n  * [Example 4: Using FLTK library](#example-4-using-fltk-library)\n  * [Example 5: Using Nlohmann/json library](#example-5-using-nlohmannjson-library)\n  * [Example 6: Complex CMake project](#example-6-complex-cmake-project)\n  * [Example 7\u00268: Another languages projects](#example-78-another-languages-projects)\n  * [Useful links](#useful-links)\n\n## CMake configuring in VS Code\n\nТак как подавляющее большинство на первом курсе использует [VS Code](https://code.visualstudio.com) в качестве редактора кода (искренне одобряется :), я решил включить сюда небольшие рекомендации по интегрированию CMake в эту среду разработки для его удобного использования.\n\n### CMake\n\nПеред настройкой внутри VS Code, сначала необходимо установить сам CMake и добавить его в Переменные Среды вашего устройства (далее `PATH`).\n\nСамый простой способ это сделать в случае операционной системы Windows - скачать архив с бинарными файлами и распаковать его в удобную вам папку (например, `C:\\Program_Files\\CMake`) по этой [ссылке](https://github.com/Kitware/CMake/releases/download/v3.31.0-rc3/cmake-3.31.0-rc3-windows-x86_64.zip). Далее путь к нему необходимо добавить в `PATH`. Вот так это выглядит под Windows 10:\n\n\u003cimg src=\".extra/pictures/path_win10_1.png\" height=\"200\"/\u003e -\u003e\n\u003cimg src=\".extra/pictures/path_win10_2.png\" height=\"200\"/\u003e -\u003e \n\u003cimg src=\".extra/pictures/path_win10_3.png\" height=\"200\"/\u003e -\u003e\n\u003cimg src=\".extra/pictures/path_win10_4.png\" height=\"200\"/\u003e\n\u003c!-- ![](.extra/pictures/path_win10_1.png)\n![](.extra/pictures/path_win10_2.png)\n![](.extra/pictures/path_win10_3.png)\n![](.extra/pictures/path_win10_4.png) --\u003e\n\nВарианты для других операционных систем и системных конфигураций также можно найти на странице загрузки CMake: https://cmake.org/download.\n\n### VS Code\n\nВ самом VS Code необходимо скачать расширение: **[CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools)** \n\u003e CMake Tools provides the native developer a full-featured, convenient, and powerful workflow for CMake-based projects in Visual Studio Code.\n\nИ поменять следующую настройку (для удобного отображения `CMake Status Bar` внизу окна):\n![](.extra/pictures/cmake_tools_option.png)\n\nТакже рекомендуется:\n\n[CMake Language Support](https://marketplace.visualstudio.com/items?itemName=josetr.cmake-language-support-vscode) - для подсветки синтаксиса и автоформатирования.\n\n[C/C++ Compile Run](https://marketplace.visualstudio.com/items?itemName=danielpinto8zz6.c-cpp-compile-run) - для подсветки ключевых слов в `Output` (да, целевое назначение этого расширения заключается в компилировании одиночных `.cpp` файлов, с чем оно тоже неплохо справляется, однако его дополнительный функционал не стоит игнорировать). \n\nДо / После: ![До / После](.extra/pictures/c_cpp_compile_run.png)\n\n## Repo configuring recommendations\n\nДля скачивания материалов репозитория, можно воспользоваться командами\n```shell\ngit clone --recurse-submodules https://github.com/UmbrellaLeaf5/simple_cmake_guide \n```\nили\n```shell\ngit clone https://github.com/UmbrellaLeaf5/simple_cmake_guide\ngit submodule init\ngit submodule update\n```\n\nВ этом репозитории используется довольно много различных библиотек, каждую из которых скачивать вручную - не самое приятное занятие. Так что рекомендуется установить сборник инструментов [MSYS2](https://www.msys2.org), в который входят MINGW, Clang, а также есть возможность устанавливать пакеты, используя встроенный терминал и пакетный менеджер `pacman`.\n\n**[Видео-инструкция по установке MSYS2 и настройки FLTK на C++ с помощью него](https://vkvideo.ru/video490206404_456239491)**.\n\nКак и в случае с CMake, необходимо добавить MSYS2 в `PATH`, а далее, запустив терминал `MSYS2 MSYS` (после установки с официального сайта будет добавлен в меню \"Пуск\"), затем вставить следующие команды для установки необходимых пакетов:\n\n```shell\npacman -S mingw-w64-x86_64-gcc\npacman -S mingw-w64-x86_64-cmake\npacman -S mingw-w64-x86_64-boost\npacman -S gtest\npacman -S mingw-w64-x86_64-gtest\npacman -S mingw-w64-x86_64-eigen3\npacman -S mingw-w64-x86_64-fltk\n```\n\n## [Example 1: Hello World!](example_hello_world/)\nВ этом примере рассматриваются азы написания `CMakeLists.txt` с поэтапным увеличением кол-ва используемых CMake команд ([simple](example_hello_world/simple/), [nice](example_hello_world/nice/) и [good](example_hello_world/good/)).\n\n## [Example 2: Stroustrup calculator](example_calculator/)\nВ этом примере CMake используется для компиляции примера выполнения второго домашнего задания по C++ в первом семестре.\n\n**! Предупреждение !**\n\nИспользование этого примера при попытке сдачи задания своему семинаристу не рекомендуется, так как далеко не все баги исходного кода Бьярне Страуструпа были исправлены в этой версии :) \n\n## [Example 3: Using Eigen library](example_eigen_package/)\nПример с подключением дополнительной библиотеки для работы с матрицами [Eigen](https://eigen.tuxfamily.org/index.php?title=Main_Page). \n\n## [Example 4: Using FLTK library](https://github.com/UmbrellaLeaf5/graphic_calculator)\nПример с подключением дополнительной легковесной графической библиотеки [FLTK](https://www.fltk.org).\n\n## [Example 5: Using Nlohmann/json library](example_nlohmann_json_package/)\nПример с клонированием репозитория библиотеки для работы с `.json` файлами [nlohmann/json](https://github.com/nlohmann/json) и её \"ручным\" подключением к CMake проекту. \n\n## [Example 6: Complex CMake project](https://github.com/UmbrellaLeaf5/alg_autumn_homeworks)\nПример комплексного CMake проекта, с использованием CMake library и рекурсивным добавлением подпроектов (в данном случае, это репозиторий с домашними работами по предмету \"Алгоритмы и структуры данных\" 3-го семестра).\n\n## Example 7\u00268: Another languages projects\n[CMake with C](https://github.com/UmbrellaLeaf5/os_homeworks) - пример, где CMake используется для компиляции и сборки проекта на языке программирования C.\n\n**! Предупреждение !**\n\nКомпилируется только под Linux-подобными операционными системами!\n\n[CMake with Assembly](https://github.com/UmbrellaLeaf5/assembly_text_task) - пример, где CMake используется для компиляции и сборки проекта на нескольких обратно совместимых языках (C, C++ и язык Ассемблера для архитектуры процессора Intel x86-64).\n\n**! Предупреждение !**\n\nКомпилируется только под указанной архитектурой процессора!\n\n## Useful links\n\nты C++ РАЗРАБОТЧИК?) ага. — Текст : электронный, видеоряд // YouTube : [сайт](https://www.youtube.com/watch?v=CCBH8UQHCW4\u0026ab_channel=Winderton).\n\nCMake Documentation and Community. — Текст : электронный // CMake : [сайт](https://cmake.org/documentation).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumbrellaleaf5%2Fsimple_cmake_guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumbrellaleaf5%2Fsimple_cmake_guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumbrellaleaf5%2Fsimple_cmake_guide/lists"}