Tags: CMake CMakeLists.txt Visual Studio
Введение
Компиляция и запуск CMake проекта «Hello world» в командной строке Windows
Запуск CMake проекта из Visual Studio
Компиляция и запуск CMake проекта в Visual Studio
Полезные ссылки
Введение
Проект CMake стартовал в 1999 году, когда компании-разработчику Kitware было поручено разработать набор новых инструментов для настройки, сборки, тестирования и развертывания проектов на разных платформах.
Если у вас есть программа (код C/C ++), предназначенная для нескольких платформ (Windows, Linux и macOS), вам определенно не захочется тратить время на настройку и поддержку всех сред сборки. CMake — это инструмент, который обеспечивает универсальный способ создания файлов проекта, чтобы их можно было использовать в среде компилятора по вашему выбору. CMake — это кроссплатформенный инструмент, предназначенный для создания, тестирования и упаковки программного обеспечения. Например, с помощью CMake можно создавать файлы проекта и решения для Visual Studio. Некоторые общие операции и настройки проекта Visual Studio и их сопоставление с CMake перечислены в виде обзора.
CMake — это генератор сборки, который предоставляет мощный предметно-ориентированный язык (англ. domain-specific language, DSL) для описания функций, которые должна реализовать система сборки. В системе сборки CMake «правила» или «настройки проекта» сборки определены в текстовых файлах, называемых CMakeLists.txt.
Проект на основе CMake состоит из исходных файлов и одного или нескольких файлов CMakeLists.txt по всей иерархии каталогов. Эти файлы содержат необходимую информацию для компиляции приложения, такую, как расположение исходных файлов, имя исполняемого файла, используемые библиотеки и т. д. Цель программиста — максимально четко выразить эти идеи с помощью языка CMake. Язык CMake — это просто язык программирования, в нем есть функции, циклы, условия и т. д.
Ранее разработка и запуск CMake проекта реализовывались только с командной строки. Visual Studio 2017 является первой версией, которая предоставляет встроенную поддержку для обработки проектов CMake. Это значительно упрощает разработку CMake проектов для VS — без необходимости использовать для этого командную строку.
Компиляция и запуск CMake проекта «Hello world» в командной строки Windows
Создаю CMake проект d:\my\project из 2-х файлов (текстовка файлов из Hello world with CMake):
Через кнопку ПУСК в Windows запускаю командную строку Windows
Меняю диск, перехожу в каталог project и создаю в нем каталог сборки build (см. Список команд Windows )
Результат
Перехожу в директорию build и запускаю команду cmake с двумя точками
The .. is the path to the parent directory (Where CMake expects a CMakeLists.txt)
Результат выполнения команд
Директория build после этого заполняется сгенерированными файлами и папками. В папке Debug находится файл для исполнения hello_world.exe:
Запускаю файл hello_world.exe с командной строки. В соответствии с программным кодом из файла main.cpp выводится сообщение Hello World.
Запуск скомпилированного CMake проекта «Hello world» из Visual Studio
Использую для тестирования скомпилированный в командной строке CMake проект «Hello world». Чтобы открыть код CMake проекта в Visual Studio 2017 , выбираются кнопки меню File > Open > Folder .
Запускаю проект (F5). Окно с сообщением «Hello World» проскакивает (не была предусмотрена задержка окна, например, через ожидание ввода переменной cin >> i ). Меняю код в файле main.cpp на следующий:
#include <iostream> using namespace std; int main() { int i; cout << "Integer?:"; cin >> i; cout << " Square of number:" << i * i << "\n"; cin >> i; return 0;
Запускаю проект после изменений (F5).
Когда вы вносите изменения в исходники или даже создаете, переименовываете или удаляете исходные файлы из своих проектов CMake, вам не нужно беспокоиться о ручном повторном запуске CMake для регенерации решения VS или проектов. При любом из этих действий Visual Studio автоматически перекомпилирует CMake проект и запускает последнюю версию модификации C++ файлов.
Компиляция и запуск CMake проекта в Visual Studio
Использую для тестирования CMake проект cmakedemo (его можно скачать из A CMake Tutorial for Visual C++ Developers). В этом проекте код C++ сгруппирован в папках со статической библиотекой libutil, динамической библиотекой sharedmod и собственно приложением theapp. Скрипты CMakeLists.txt созданы в каждой из подпапок src , а также в корне.
Чтобы открыть код CMake проекта в Visual Studio 2017, достаточно выбрать в меню File > Open > Folder. Пытаюсь после этого запустить приложение обычным для VS способом (F5). Получаю сообщение:
Система не находит exeшник для запуска приложения.
В проекте, сразу после его открытия (через File > Open > Folder) автоматически генерируется папка bin
В папке bin находится файл для запуска приложения (theapp.exe), а также скомпилированные библиотеки
Выполняю click на файле theapp.exe, окно проскакивает. Добавляю код для задержки окна (выделен красным цветом).
#include <iostream> #include "pisym.h" int main() { std::cout << "Hello world from The App!" << std::endl; piMonteCarloSimulation pisym{}; std::cout << "Symulated value of PI:" << std::endl; for (int i = 0; i < 10; ++i) std::cout << " " << pisym.aproxPi() << std::endl; int k; std::cin >> k; return 0; }
Еще раз отмечу замечательную особенность работы с CMake проектами в VS. После модификации исходных файлов проект автоматически перекомпилируется.
Повторяю запуск через click на файле theapp.exe, получаю результат:
Как решить проблему запуска CMake приложения непосредственно из VS? Очень просто:
После открытия CMake проекта (через кнопки меню File > Open > Folder) VS перестраивается для работы с CMake проектом. Дополнительно в основном меню появляются кнопки CMake и Build. Через кнопку CMake в меню VS можно выполнить как отладочные запуски приложения так и ряд настроек проекта.
Более подробно с особенностями работы с CMake проектами в Visual Studio можно ознакомиться в публикации A CMake Tutorial for Visual C++ Developers, а также в публикациях по ссылкам, которые приводятся ниже.
Полезные ссылки:
- Список команд Windows ( Windows CMD ) с описанием и примерами
- Cmake command-Line Tools
- CMake и Visual Studio
- My First C/C++ App Built with CMake on Windows
- How to optimize computation with HPC (Hello world with CMake!!!)
- A CMake Tutorial for Visual C++ Developers!!!
- Visual C++ for Linux Development with CMake!!!
- Creating CMake Linux projects with Visual Studio
- Get started with CMake Tools on Linux
- INTRODUCING THE NEW ADVANCED CMAKE PROJECT SUBSYSTEM
- Introduction to modern CMake for beginners
- Tutorial: Create C++ cross-platform projects in Visual Studio!!!
- CMake in Visual Studio!
- CMake support in Visual Studio!!!
- CMake Cookbook Китайское руководство
- Простое приложение CMake!
- Основы CMake (youtube)
- CMake Tutorial
- Полное руководство по CMake. Часть первая: Синтаксис
- Полное руководство по CMake. Часть вторая: Система сборки
- Полное руководство по CMake. Часть третья: Тестирование и пакетирование
- Подробные примеры CMake!!!
- Инструкции CMAKE
- Примеры структур простых проектов CMake!
- Установка CMake
- Проекты CMake в Visual Studio!!!
- CMake компоновка OpenCV
- How to Build a CMake-Based Project (проект на основе CMake, который использует SDL2 и OpenGL для рендеринга вращающегося 3D-логотипа)!!!
- Running CMake for Windows / Microsoft Visual C++
- CMake by Example
- Build system basics — part 2!
- Компиляция библиотеки C ++ с помощью CMake под Linux
- Basic CMake usage (анализ простого шаблона CMakeLists.txt)
- Ofek’s Visual C++ stuff (критика возможностей CMake
- How to Use Modern CMake for an App + Lib Project
- What’s New in CMake – Visual Studio 2019 Preview 2
- Configuring CMake to build OpenCV on Windows
- Intro To Visual Studio & Audio Programming — Part 2 VS2019 + CMake + WSL
- How to use Cmake to build and install OpenCV and Extra Modules from source and configure your Pycharm IDE
- Building a C++ Application on Windows (Get Started with ZED)