Как добавить cmake в path в windows

There are several ways to install CMake, depending on your platform.

There are several ways to install CMake, depending on your platform.

Windows

There are pre-compiled binaries available on the Download page for Windows as MSI packages and ZIP files. The Windows installer has an option to modify the system PATH environment variable. If that is not selected during installation, one may manually add the install directory (e.g. C:Program FilesCMakebin) to the PATH in a command prompt.

One may alternatively download and build CMake from source. The Download page also provides source releases. In order to build CMake from a source tree on Windows, you must first install the latest binary version of CMake because it is used for building the source tree. Once the binary is installed, run it on CMake as you would any other project. Typically this means selecting CMake as the Source directory and then selecting a binary directory for the resulting executables.

macOS

There are pre-compiled binaries available on the Download page for macOS as disk images and tarballs. After copying CMake.app into /Applications (or a custom location), run it and follow the “How to Install For Command Line Use” menu item for instructions to make the command-line tools (e.g. cmake) available in the PATH. Or, one may manually add the install directory (e.g. /Applications/CMake.app/Contents/bin) to the PATH.

One may alternatively download and build CMake from source as in the following section.

Linux, UNIX

There are pre-compiled binaries available on the Download page for some UNIX platforms. One may alternatively download and build CMake from source. The Download page provides source releases.  There are two possible approaches for building CMake from a source tree.  If there is no existing CMake installation, a bootstrap script is provided:

  ./bootstrap
  make
  make install

(Note: the make install step is optional, cmake will run from the build directory.)

By default bootstrap will build CMake without any debug or optimization flags. To enable optimizations you will need to specify the CMAKE_BUILD_TYPE option to bootstrap like this: ./bootstrap -- -DCMAKE_BUILD_TYPE:STRING=Release

For more options with bootstrap, run ./bootstrap --help  .

Or, an existing CMake installation can be used to build a new version:

  cmake .
  make      
  make install

(Note: the make install step is optional, cmake will run from the build directory.) If you are not using the GNU C++ compiler, you need to tell the bootstrap script (or cmake) which compiler you want to use. This is done by setting the environment variables CC and CXX before running it. For example:

  env CC=cc CXX=CC ./bootstrap
  make
  make install

Download Verification

Each release on the Download page comes with a file named cmake-$version-SHA-256.txt, where $version is the release version number.
One may use this file to verify other downloads, such as the source tarball. For example:

  $ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-SHA-256.txt
  $ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1.tar.gz
  $ sha256sum -c --ignore-missing cmake-3.20.1-SHA-256.txt
  cmake-3.20.1.tar.gz: OK

The SHA-256 file itself can be verified by GPG signature:

  $ curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1-SHA-256.txt.asc
  $ gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys C6C265324BBEBDC350B513D02D2CEF1034921684
  $ gpg --verify cmake-3.20.1-SHA-256.txt.asc cmake-3.20.1-SHA-256.txt

The GPG key C6C265324BBEBDC350B513D02D2CEF1034921684 is a signing subkey whose expiry is updated yearly.

Jump to content

  • Программирование

PKOdev.NET - Community of Developers & Administrators

  • Existing user? Sign In  

  • Sign Up

V3ct0r

  • Reply to this topic

  • Start new topic

Recommended Posts

  • Report post

Установка CMake

cmake.png

«CMake (от англ. cross platform make) — это кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода. CMake не занимается непосредственно сборкой, a лишь генерирует файлы управления сборкой из файлов CMakeLists.txt» — Википедия

Привет! 

В данной статье мы установим CMake под Windows. Этот полезный инструмент позволяет автоматизировать процесс сборки различных проектов.

1) Скачайте дистрибутив CMake с официального сайта.

В разделе «Latest Release» (самый последний релиз) найдите таблицу «Binary distributions» (бинарные дистрибутивы) и, в зависимости от разрядности Вашей операционной системы (x86 или x64) и формата дистрибутива (архив .zip или установочный файл .msi), выберите нужную ссылку на скачивание:

2.png

2) Вы выбрали дистрибутив в формате .msi.

Запустите скачанный установочный файл:

3.png

2.1) Согласитесь с лицензионным соглашением:

4.png

2.2) В окне «Install options» (настройки установки) установите радио-переключатель в положение «Add CMake to the system  PATH for the current user«. Это добавит программу в системный путь PATH для текущего пользователя. Опция «Add CMake to the system PATH for all users» добавит CMake в системный путь для всех пользователей компьютера. Также Вы можете попросить установщик создать иконку для запуска CMake на рабочем столе, установив флажок «Create CMake Desktop Icon«:

5.png

2.3) В окне «Destination Folder» выберите путь, куда Вы хотите установить CMake. Для этого нажмите кнопку «Change» (изменить путь):

6.png

2.4) Нажмите кнопку «Install» (установить) в следующем окне, чтобы начать установку:

7.png

2.5) Дождитесь конца процесса установки программы:

8.png

2.6) CMake установлен!

9.png

3) Вы выбрали дистрибутив в формате .zip-архива.

Распакуйте архив в нужное Вам место.

Например, в

D:cmake

Получаем следующую структуру папок:

D:cmakebin
D:cmakedoc
D:cmakeman
D:cmakeshare

3.1) Добавьте CMake в системный путь PATH. Для этого в Свойствах системы нажмите на ссылку «Дополнительные параметры системы«:

10.png

Появится окно «Свойства системы«, нажмите на кнопку «Переменные среды«:

11.png

В окне «Переменные среды» выберите переменную Path и нажмите кнопку «Изменить» в нужном разделе: «Переменные среды пользователя» определяет переменные для текущего пользователя, а «Системные переменные» определяет переменные для всех пользователей компьютера.

12.png

В появившемся окошке «Изменить переменную среды» нажмите на кнопку «Создать» (1), далее в новом поле ввода (2) укажите путь до папки bin из дистрибутива CMake. Для моего примера (см. п. 3):

D:cmakebin

В конце нажмите на кнопку «ОК» (3).

13.png

Теперь CMake добавлен в системный путь и доступен из любого места!

4) Проверьте работоспособность CMake. Для этого запустите Командную строку (cmd.exe) и выполните следующую команду:

cmake --version

Вы должны увидеть текущую версию программы:

C:UsersВиктор>cmake --version
cmake version 3.12.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).

На этом установка CMake завершена! Более детальную информацию по установке и использованию CMake Вы можете найти на официальном сайте.

  • Quote

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later.

If you have an account, sign in now to post with your account.


×

  • Existing user? Sign In
  • Sign Up

  • Browse
  • Staff
  • Online Users
  • All Activity
  • Unread Content
  • Search
  • Leaderboard

В предыдущей статье имел наглость использовать CLion в качестве IDE. И тут же прибежал человек с вопросом: ой, проприетарная платная поделка, продался, зажрался, итп. Справедливости ради, на Хабре такой комментарий был всего один, но в реальности их тысячи. Например, крайний действующий аккаунт на ЛОРе, у меня зарегистрирован с 2010 года, и в почти каждой дискуссии с участием какого-то несвободного софта начинается этот ад. Понятно что никому я ничего не докажу, но редким бредущим мимо может помочь.

Статья условно делится на две части: социально-мотивационная и техническая (как собирать CMake в Windows под различными IDE).

Откуда всё пошло

В основу статьи лёг вот этот комментарий из прошлой статьи: «Если подкаст для начинающих и непрофессионалов, то почему не учли лицензию IDE :(» и далее по тексту.

Статья сделана по результатам стрима на Твиче и вашего фидбека на нём. Запись есть на YouTube. Эта статья — не расшифровка подкаста, а продукт его осмысления.

Исходный посыл

Вначале, давайте проверим валидность исходного предположения: софт — это дорого. Если зайти на сайт, то окажется, что CLion стоит 8.90 баксов в месяц. 580 рублей. Понятно, что для человека, который не зарабатывает программированием на жизнь — это иногда может показать приличной суммой, которую можно потратить на что-нибудь более полезное. Купить поесть, например.

Для профессионала всё совсем по-другому, но давайте вот оставим эту тему. Журналист отличается от работника отдела маркетинга компании-производителя софта или игры тем, что он не продвигает политику Партии, не делает шаги для продвижения продукта. Он говорит как есть. Как это всё на самом деле, как журналист по-настоящему видит вопрос. То же самое и с настоящими евангелистами.

Сущность явлений, и лет вереница,
Лица друзей, и маски врагов,
Ясно видны и не могут укрыться
От взора поэта — владельца веков.

Свет дальних звезд и начало рассвета,
Жизни секреты и тайны любви,
В миг вдохновения солнцем согретый —
Все отражается в душах поэта —
В зеркале мира…

(с) Константин Никольский, «Зеркало Мира»

Если действиетльно интересно, как CLion увеличивает ваш доход — вы найдете к кому обратиться, а мы тут о другом.

Типология

Вместо этого рассмотрим группы людей, которых максимально бомбит от закрытого софта.

Как вы уже поняли, я нифига не социолог, и имею только ту типологию, которая выработалась в жаре форумных разборок. Она имеет только то преимущество, что отнести человека к какой-то группе можно практически не включая мозг, посмотрев на первые два комментария.

Итак, люди бывают:

  • Борцы за свободу и опенсорц
  • Честно заблуждающиеся
  • Животные

Варианта неправоты автора предлагаю не рассматривать. Я — это другое дело.

Борцы за свободу и опенсорц

Самые чистые и светлые — это борцы за опенсорц. Я и сам из тех, кто услышав слово «Linux» постоянно поправляет, «не Linux, а GNU/Linux». Проблема в том, что реальный мир ни разу не чёрно-белый. У нас есть некое количество свободы, и это — ресурс, который в случае необходимости можно использовать. Как пошутил (или нет) кто-то из менеджмента Mozilla, «зачем нам кредит доверия, если мы не будем его тратить?».

Пример: был такой человек, Мигель де Иказа. Он сделал Gnome и приложил руку к формированию дестопного GNU/Linux таким, как мы его знаем. А потом его выпихали из сообщества, а Столлман назвал его «предателем свободы»:

«Miguel de Icaza, по существу — предатель Free Software community. <…> Проект нацелен на обустройство функционирования якобы „опенсорсных“ программ на платформе Windows; тем самым бесценное время разработчиков уводится от свободных платформ»

И где теперь Мигель? Он и его команда работают бок о бок с одним из величайших проектов последних лет — переносу .NET на GNU/Linux под пермиссивными лицензиями. Он верно потратил своё время.

На стриме я убил не менее двадцати минут на то, чтобы запинать CMake под Visual Studio Code. Не получилось. А в бесплатной, но несвободной Visual Studio, получилось с первого раза. Это именно то, что мы так часто получаем при попытках использовать свободный софт: в опенсорце, по понятным причинам, нет времени продумывать end-to-end сценарии и заботиться о продукте целиком. Спасибо разработчикам уже за то, что сделали хоть что-то. Но для нас как для пользователей всё равно остаётся морально-этический выбор: либо выбрать свободу и потратить на запинывание свободного софта много времени, или напротив — потратить нашу свободу на покупку времени, которое можно потом пустить на какие-то добрые дела.

Поскольку этот вопрос выходит за рамки решаемости техническими вопросами, здесь и закончим. По-настоящему идейный человек верен своей идее.

Животные

О, а вот от этой категории меня бомбит.

«Специфическими особенностями человека, отличающими его от других животных, являются прямохождение, высокоразвитый головной мозг, мышление и членораздельная речь. Человек изучает и изменяет себя и окружающий мир, создаёт культуру и собственную историю.» (с) Википедия.

К сожалению, в разговоре об IDE зачастую оказывается, что собеседник не способен к самостоятельному мышлению, вместо членораздельной речи мычит «а мне и так норм» и жрёт что дают. Из-за прямохождения его легко спутать с человеком, но не ошибитесь.

На этих существах ездят все, кому ни попадя. В играх им продают лутбоксы и DLC с ностальгической музыкой. В редакторах их сажают на разные анально оккупированные штуки, имеющие целью привязать пациента к конкретной среде, экосистеме, и так завендорлочть, что никакого феназепама не нужно. Они всё съедят. «А мне и так норм.»

Важно добавить, что ездят по ушам не только маркетологи, но и просто тролли, либо натуральные клинические шизики. Шизиков много, вы не поверите сколько.

Например, помните манифест, который недавно выложил Никитонский (точней, его перевод на Хабр): Моё разочарование в софте? Как у меня от него бомбит. Искренне надеюсь, что Никитонский это всё писал чтобы знатно потролить, а не на самом деле.

Глядите какие там тезисы:

  • Всё невыносимо медленно — современный телефон мощней компов, которые отправляли людей на Луну;
  • Всё ОГРОМНОЕ — Андроид весит 6 гигабайт;
  • Всё гниёт — старые девайсы не работают или работают плохо;
  • В программировании хаос — посмотрите на графы зависимостей в npm и left-pad.

Троллинг троллингом, а кому-то может быть невдомёк, что размер исходников «что привели человека на Луну», то есть Аполлона-11, такой, что автор вряд ли бы захотел их читать.

Что современные операционки определяют любое оборудование и имеют в себе всё на любой случай жизни. Что тормознутость девайсов привела к чудесной ситуации, когда мерсссские капиталисссссты почеаслись и разивили железо до современного уровня, благодаря чему у нас в кармане и лежит мегадевайс на все случаи жизни. Даже полотенца не надо, оно есть в Google Play. Упомянутый npm позволяет в час обычному человеку писать невообразимой сложности вещи, которые раньше заняли бы годы.

И вот всем этим товарищам, которые «жрём что дают», внезапно в голову начинают прилетать мега-идеи из списка выше. Давайте распространим на IDE:

  • У приложений на Electron (Visual Studio Code, Atom) буковки появляются на экране слишком медленно, то ли дело vim или emacs;
  • Eclipse IDE тормозит;
  • Вообще, тормозит Java — вместе со всем, что на ней написано, включая NetBeans, IDEA и Clion;
  • Любые IDE тормозят жрут проц просто так;
  • Проприетарщина — зло;
  • Список можно продолжать.

Этого списка уже хватит, чтобы капитально съехать крышей. Не верьте всякой фигне. Если vim лучше Eclipse (или наоборот) в некоторых кейсах, то это точно не потому, что вимеров соседи облучают микроволновкой, а эклипсеров ночью похищают пришельцы.

К сожалению, в результате долгих сетевых диванных войн было в точности установлено: диалог тут можно не вести. Человеку — человеческое, а животному — животное. Так устроена жизнь. Вероятность, что кто-то прочитает эту статью и одумается крайне мала, immolate improved.

Честно заблуждающиеся

Теперь мы закончили с крайностями: особо умными из секты Столлмана с одной стороны спектра, и не очень умными животными с другой, давайте поговорим об обычных людях.

Первое заблуждение в том, что мы каким-то образом прибиты гвоздями к IDE. Это пошло с тех времён, когда люди использовали какие-то Delphi 7 и древние версии Microsoft Visual Studio. Говорят, в новой Вижуалке всё стало хорошо с проектными файлами. Привет-привет, сейчас на дворе 2018 год, рабства больше нет.

Чтобы избавиться от рабства нам свыше дан CMake: тулсет из кроссплатформенных опенсорсных утилит, который позволяет собирать, тестировать и паковать приложения.

Это всё ещё ничего не говорит новичку и руки тянутся к IDE. Всё это от страха и непонимания происходящего. Я сам родом из джавы, и поэтому хорошо знаю, как расширяются глаза человека, в первый раз увидившего pom.xml.

Давайте разберёмся, из чего состоит созданный в прошлый раз проект, и как его построить во всевозможных разных IDE.

Состав файлов:

  • CMakeLists.txt
  • main.cpp
  • shaders.shader

Шейдер у нас компилируется прямо в рантайме, функцией D3DCompile. Работает D3DCompiler из DirectX SDK (который теперь Windows SDK). Никакого IDE для его сборки не нужно.

main.cpp — это единственный файл, который надо собрать. И собирается он с помощью информации, которая целиком и полностью находится в CMakeLists.txt.

В обратную сторону: есть CMakeLists.txt, который говорит нам, что именно мы собираемся скомпилировать. В нём прописана сборка main.cpp. Этого хватает, чтобы скомпилировать проект. После компиляции получается exe-файл, который после запуска собирает и шейдер, и показывает его на экране. Всё предельно просто, IDE в этой цепочке не участвует и может быть любым.

IDE не обязательна. Вообще. Что тут непонятного?

Сборка

Подготовительные моменты

Как всегда, подготовка занимает чуть ли не большую часть процесса. Нужно уяснить несколько вещей.

Предполагается, что всё делается на основе Msys2, который мы устанавливали в прошлый раз. Если это не так, расхлебывать придется самостоятельно :)

Как установить CMake и Ninja

Чтобы мочь что-то собрать, необходимо установить CMake, если вы это ещё не сделали.

  • Качаем с сайта: https://cmake.org/download. У меня cmake-3.12.2-win64-x64;
  • Распаковываем и добавляем в виндовую переменную окружения PATH путь до места, где лежит cmake.exe;
  • Качаем с сайта генератор ninja самой свежей версии;
  • Распаковываем и тоже кладём куда-нибудь в PATH.

Как редактировать PATH, чтобы не поехать кукухой

Первый способ всем известен: win+pause -> Advanced system settings -> Advanced -> Environment variables. К сожалению, даже в Windows 10, в которой добавили редактор переменной PATH, это всё ещё не очень удобно.

Если вы часто пердолитесь с PATH, использование стандартного окна редактирования очень действует на нервы. Советую использовать Rapid Environment Editor — он бесплатный и сильно экономит нервы.

Как подключать DLL из MinGW в режиме разработки

Чотбы приложуха запустилась, нужны dll файлы как минимум из mingw64bin.

К сожалению, я так и не смог найти действительно удобного решения для подбрасывания библиотек из MinGW в PATH. Если какой-то мудрец в комментариях можект рассказать, буду премного благодарен.

Сейчас самым простым кажется подкладываение bin-директории MinGW прямо на первое место в PATH. (В случае Visual Studio, можно и просто набросать библиотек в каталог сборки.) К сожалению, у этого способа есть огромный минус: часть софта в Windows начинает отваливаться сразу же после модификации PATH. Например, у меня перестал запускаться Overwatch, а это совершенно фатальная штука.

Если вы так же, как и я, живёте в компьютере, а не только включаете его в рабочие часы, предлагается следующая схема: перед началом программирования добавлять MinGW в PATH, а после — убирать. Для облегчения процесса нужно сделать два батника, которые можно запускать двойным щелчком:

before.bat:

setx path "Z:msys64mingw64bin;%path%"

after.bat:

setx PATH "%PATH:Z:msys64mingw64bin;=%"

Как подключать DLL в режиме «тестового релиза»

Ясно, что предыдущий способ работает только пока mingw64bin находится в PATH, то есть только на компьютере разработчика. Да и там даже, не всегда хочется уродовать PATH. Если же это запустит обычный человек (или мы сами после запуска after.bat), то произойдет нечто вроде:

Самый простой способ решить эту проблему — подложить нужные dll рядом с исполняемым файлом. Но для этого нужно узнать, какие dll используются!

У нас уже есть для этого некие утилиты производства Microsoft.

  • Посмотреть полный список работающего приложения можно было бы с помощью ListDLLs, но оно не показывает то, что ещё не загружено.
  • Если сделать Tools -> Visual Studio Command Prompt, dumpbin /dependents "Z:gamebuildMingw64-Debugsrc.exe", то оно покажет только dll самого первого уровня. Иначе говоря, если докинуть только то, что подсказывает dumpbin, то после запуска всё ещё будут ошибки — просто они будут про другие DLLки.

Чтобы побегать по зависимостям в глубину, есть вот такой скрипт, который можно выполнять прямо из командной строки (msys2, cygwin, итп — достаточно чтобы там внутри был установлен python2/3 и objdump).

  • Качаете скрипт mingw-bundledlls,
  • Кладёте рядом с экзешником,
  • В текстовом редакторе в массив blacklist = [ добавляете наши кусочки DirectX: d3d10.dll, d3d11.dll, d3dcompiler_43.dll,
  • chmod 755 ./mingw-bundledlls,
  • Чтобы посмотреть использованные dll: ./mingw-bundledlls ./src.exe (ну, любой экзешник, который вам более интересен),
  • Чтобы автоматически скопировать и положить рядом: ./mingw-bundledlls --copy ./src.exe
  • PROFIT: экзешник запускается и просто так, двойным щелчком по exe-файлу, и из Visual Studio.

Есть ещё разные хитрые способы подрядить CMake сам копировать dll, но если начинать углубляться в вопросы дистрибуции, то так можно это статью вообще никогда не закончить.

Сборка вручную

  • before.bat
  • Пуск -> Выполнить -> cmd.exe
  • cd /d z://game/src
  • cmake -G "Ninja" -D EXECUTABLE_OUTPUT_PATH="bin" -D CMAKE_CXX_COMPILER="Z:/msys64/mingw64/bin/g++.exe" -D CMAKE_C_COMPILER="Z:/msys64/mingw64/bin/gcc.exe" .
  • ninja
  • Запускаете сгенерированный в bin файл сразу, или подкладываете dll по инструкции выше и выполняете after.bat

Мы докзали, что не привязаны к IDE вообще.

Сборка в Visual Studio

Но всё-таки, разрабатывать без IDE — не дело. В прошлый раз мы уже собрали тестовое приложение с помощью CLion. Но это ведь платная проприетарщина и зашквар, верно? Забудем. Теперь только свободка.

В Visual Studio последовательность необходимых действий супер простая.

  • before.bat
  • Запустить Visual Studio;
  • File -> Open -> CMake;
  • Выбрать CMakeLists.txt;
  • Вижуалка некоторое время думает и отображает проект;
  • Главное меню -> Cache -> Generate -> имя проекта;
  • Смотрим на Output и исправляем ошибки (например, у меня ругалось на версию CMake, пришлось опустить до 3.11 вместо 3.12);
  • Главное меню -> CMake -> Change CMake Settings (выбираем MinGW64-Debug);
  • В проекте автогенерируется файл CMakeSettings.json. Указываем там путь до MinGW (у меня это в предыдущем видео был «Z:msys64mingw64»), сохраняем файл;
  • Главное меню -> Cache -> Generate -> CMakeLists.txt;
  • Главное меню -> Cache -> Generate -> имя проекта;
  • Если всё правильно сделали, в меню Select a valid startup item (рядом с зеленой стрелкой запуска приложения) появится пункт с именем проекта;
  • Запускаем.

Как и в случае с консолью, можно запустить прямо так (помня, что MinGW находится в PATH), либо выполнить after.bat и подложить необходимые DLL по инструкции. DLL нужно класть прямо в каталог, куда собирается приложение. Его можно указать в параметре buildRoot в файле CMakeSettings.json.

Итак, господа, самое главное: из Visual Studio всё отлично компилируется и запускается. Мы докзали, что не привязаны к коммерческой IDE.

Сборка в Visual Studio Code

К сожалению, Visual Studio всё ещё остаётся несвободным закрытым ПО. Нужно перейти к чему-то более свободному, и это Visual Studio Code.

Вначале забавный майндфак. Если запустить VSCode на мониторе с большим масштабированием (я дома сижу за телевизором, например), то интерфейс VSCode превратится в кашу. Чтобы этого не происходило, нужно запускать его с ключом --force-device-scale-factor (сделать ярлычок на рабочий стол, или что-то такое).

К сожалению, менеджмент PATH для VSCode я так и не осилил, поэтому единственный способ запуска — это модификация PATH с помощью before.bat и ещё один хак, который я опишу ниже.

Дальше надо настроить VSCode.

  • Устанавливаем CMake Tools: View -> Extensions -> в поиск вписать «CMake Tools», нажать install напротив пакета, который сделал автор vector-of-bool.
  • View -> Explorer -> Open Folder (выибраем директорию с нашим проектом);
  • Command Palette (CP, шорткат Ctrl+P) -> «> CMake: Scan for Kits»;
  • Выбрать наш «GCC 8.2.0», пусть до которого ведёт в правильное место, где установлен msys2 или что вы там используете;
  • File > Preferences > Settings;
  • Перейти на вкладку User Settings;
  • Щелкнуть по трём точкам в верхнем правом углу панели, и из меню выбрать «Open settings.json»;
  • Добавить следующие опции:

"cmake.configureOnOpen": true,
    "terminal.integrated.shell.windows": "D:/msys64/usr/bin/bash.exe",
    "terminal.integrated.shellArgs.windows": [
        "-i"
    ],
    "terminal.integrated.env.windows": {
        "PATH": "/mingw64/bin;/usr/local/bin;/usr/bin;/bin;Z:/msys64/bin/;Z:/msys64/usr/local/bin;Z:/msys64/usr/bin;Z:/msys64/bin;Z:/msys64/mingw64/bin/;%PATH%"
    },
    "cmake.buildDirectory": "${workspaceRoot}/build/${buildType}",
    "cmake.clearOutputBeforeBuild": true,
    "cmake.generator": "Ninja",    
    "cmake.cmakePath": "C:\my\opt\cmake-3.12.2-win64-x64\cmake-3.12.2-win64-x64\bin\cmake.exe",
    "cmake.mingwSearchDirs": [
        "Z:/msys64/mingw64",
    ],
    "cmake.preferredGenerators": [
        "Ninja"
    ],
    "cmake.loggingLevel": "debug"

  • Сборка должна произойти автоматически, и билд сложится в директорию build. Если этого не произошло, нужно мышкой клацнуть по кнопке Build с шестерёнкой в статусной строке.

Понятно, что там нужно напрямую указать путь до mingw и cmake. «Но у меня же PATH!» Просто укажите, пожалуйста, это решит целый комплекс проблем.

Есть, впрочем, один эксклюзивный способ не поганить себе PATH.

  • "cmake.generator": "MSYS Makefiles"
  • "cmake.preferredGenerators": [ "MSYS Makefiles"]
  • Проверьте что MinGW нет в PATH (after.bat);
  • Проверьте что удалили директорию build в проекте.
  • Запустите консоль Msys2;
  • export PATH=/z/msys64/mingw64/bin;$PATH (можно потом будет вписать в какой-нибудь "~/.bashrc")
  • Из неё запустите VSCode, например так: "C:UsersolegchirAppDataLocalProgramsMicrosoft VS CodeCode.exe"
  • И дальше всё как раньше. Должен нормально сгенерироваться файл.
  • При попытке немедленно запустить его из Проводника двойным щелчком мгновенно приведёт к ошибкам поиска DLL — это значит, что всё верно, внутри VSCode у нас действительно используется специальный PATH, а вне его — нет.

Итак, мы доказали что в свободном IDE мы тоже жить вполне себе можем.

Итоги

Резюмируя, если вы нормальный человек, то можете пользоваться CMake, MinGW и в ус не дуть. Всё свободно переносимо между IDE, всё просто работает. Мы можем в любой момент использовать любую платную, закрытую, несвободную IDE, и нам за это ничего не будет. А вот все остальные будут страдать, и поделом.

В будущих статьях будет учитываться ваше мнение. Вы можете прямо во время стрима на Твиче завать вопросы и предлагать предложения в комментариях. Будут ли вообще эти статьи — зависит от того, насколько яростно вы наяриваете стрелочку вверх под этим комментарием.

олег родился в интернете
в почтенной геймерской семье
питался лайками и в гугол
за двойки ставили его

© Александр Раевский

I am new to VS Code and CMake in general. I come from 14 years of using Visual Studio and solution files. Now the industry wants me to be cross platform and do things in Linux. Well, I don’t want to be a deprecated old man.

I downloaded VSCode and installed the cmake and cmake tools extensions. I created a folder, opened workspace, ctrl+shift+p and chose to configure, then chose VC++ as my compiler.

When I type cmake on the command line inside or outside of VS Code, it is not a recognized command. However, I can build with ctrl+shift+p cmake->Build.

How do I get cmake on the command line and use it as ‘vector-of-bool’ does in his video?
https://www.youtube.com/watch?v=abuCXC3t6eQ

Where is the cmake executable it is currently using and should I just add that to the path?

I am on Windows 10 and had Visual Studio 2019 installed previous to trying the VSCode + cmake tools.

asked May 6, 2020 at 1:36

Christopher Pisz's user avatar

Christopher PiszChristopher Pisz

3,6002 gold badges27 silver badges62 bronze badges

Visual Studio 16 2019 already includes a CMake installation in C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDECommonExtensionsMicrosoftCMakeCMakebincmake.exe. So my guess is that you are using this version inside VSCode.

To run an explicitely installed CMake you should download a CMake suitable for your platform from https://cmake.org/download install it and add the bin folder of the installation directory to your PATH variable, e.g. set PATH=C:Program FilesCMakebin;%PATH% on Windows.

After doing so you can easily use CMake from the command line.

answered May 6, 2020 at 7:49

vre's user avatar

If you are using vector-of-bool’s (now Microsoft’s) cmake tools then you do not need to use the command line for building.

ctrl + shift + p => cmake: build target will build everything for you.

To use cmake from command line, you need to add the cmake binary directory to system path. Most probably, C:Program FilesCMakebin.

answered May 6, 2020 at 8:20

Roy2511's user avatar

Roy2511Roy2511

8881 gold badge5 silver badges21 bronze badges

How to setup CMake for C++ (Windows)

by | Last Updated:
2021-02-08

C++

In this article I will provide you with the information on how to setup CMake and compile your C++ project. You may also use this to compile third-party projects and solutions that you depend upon.

Table of Contents

  • What do you need to follow through this tutorial
  • Why do we need CMake?
  • Install CMake
  • Creating our project
  • How to generate build files
  • Adding more source files
  • Using CMake GUI to build
  • Using Visual Studio 2017/2019

What do you need to follow through this tutorial

  • You would need to have some basic knowledge of C++ as I will not be explaining why or what the application that we are compiling does. Start from this post that explains the basics of C++.
  • There are some terminal commands being executed but you will not need previous knowledge on Command Prompts / PowerShell. Check out this post on how to operate the command line.
  • Visual Studio installed with support for C++ compilation. CMake will automatically detect your Visual Studio installation later.

Why do we need CMake?

C++ is an old language. Do not make a mistake it is really powerful and provides a lot of control over low level memory and system programming. As an old language though it misses some of the modern high-level language concepts. When programming in C++ it is hard to target multiple platforms as there is no unified project structure as well as good package management.

On other languages like Java, C# and python the code is always compiled to an intermediate language or is interpreted directly at runtime. That code is then run by a special virtual machine that translates it to commands for the specific machine.

This is what CMake strives to solve but the other way around. It is a project generator. On Windows one would want to work with Visual Studio project files and solutions and on Linux one would rather have Make files. This essentially means that we unify our project files under CMake which on the other hand generates the project files for the specific system.

Read more: You can check out more on how the compiler and linker work to gain in depth knowledge on why the process is different than other languages.

Install CMake

To install cmake you open this page: https://cmake.org/download/

You should find the corresponding binary for your windows installation (x64, x86) and download the .msi file. It should roughly look something like this:

CMake Download

The install wizard is pretty straightforward just make sure that on the question “By default CMake does not add its directory to the system PATH” you check one of the options Add CMake to system Path so that later we can execute commands from the windows terminal.

Creating our project

We will have the most simple example for our first compile using CMake. We will start as always with our “Hello, World!” application using a single .cpp file to demonstrate how CMake will generate a project and compile that file.

We will have the following project structure:

root
├── src/
│  └── main.cpp
└── CMakeLists.txt

In our “main.cpp” file we will write down the following “Hello, World!” application:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

The “CMakeLists.txt” file is our base of operations when using CMake. It can link other CMakeLists files which later on will make it easy to include dependency (vendor) projects and compile them along our application. We will start with the most basic content for our file so that we can compile our “main.cpp” into a simple console application:

# This will set the minimum version of CMake required to generate the projects
# CMakeLists has its own language and features and as more and more versions are 
# added it will include new keywords and options
cmake_minimum_required(VERSION 3.18) 

# This will give our project a name
project(Main)

# This instructs CMake that we want to generate an executable file from this project
# Other options would be add_library but this is a topic for another time
# You can notice that we also pass on the path to our cpp file
add_executable(Main src/main.cpp)

How to generate build files

To start generating the cmake projects we will need to open a terminal window inside the root folder where our CMakeLists.txt file resides. This can easily be done by clicking shift + right mouse button inside the folder and then selecting “Open PowerShell window here”. After we’ve done that we can execute the following commands:

mkdir build
cd build
cmake ..

This will create the directory build, then move the terminal working directory to build and then generate projects using the “CMakeLists.txt” file in the previous directory as noted by the two dots after cmake (single dot means current directory, two dots means one directory up).

You can also specify the source and build directories by adding the following flags:

cmake -B [build directory] -S [source directory]

After executing this command the “build” folder will be filled with project files. Double clicking the “Main.sln” file would open up Visual Studio. If you’ve followed up until now you would have 3 projects in the solution explorer as follows:

Visual Studio Generated Projects
  • Main – this is the project that we want to build and that will generate our executable.
  • ALL_BUILD – by default this will be set up as the startup project and it will run Main and ZERO_CHECK.
  • ZERO_CHECK – as our project is not actually controlled by visual studio but generated externally we cannot add source/header files inside of visual studio itself. To do that we would need to append them into the add_executable command inside of “CMakeLists.txt”. The ZERO_CHECK project would then monitor for changes in that file and regenerate VS projects based on the changes.

Now that we have Visual Studio open we can build the project. Use the shortcut ctrl + shift + b to run the build command or click on the top menu “Build” -> “Build Solution”.

Visual Studio Build Solution

Note: If you still have the command line open you can also use the command

cmake --build . --config Debug

You can run the project by right clicking on the “Main” project in Visual Studio solution explorer and selecting the option “Set as Startup Project”. On the top navigation bar you will notice a play button with the label of “Local Windows Debugger” that you can click to run your project (shortcut is ctrl + F5).

Note: If you’ve built the project using the command line you can run the application that we just compiled by using the following commands:

cd Debug
.Main.exe

Adding more source files

To add other files to the project you would need to create them in the target directory using Windows Explorer and then add them to CMakeLists. Lets say for example that we decide to move the “#include <iostream>” and all future includes into another file. We also want to create a header file called “main.h” and another C++ file called “other.cpp” resulting in the following following changes:

root
├── build/
│  └── Generated Build Files
├── src/
│  ├── main.h
│  ├── main.cpp
│  └── other.cpp
└── CMakeLists.txt

Create a file called main.h in the src directory with the following content

void print_hello_world();

Then we modify main.cpp to include main.h instead of <iostream> and also call the newly defined function. This would result into the following file:

#include "main.h"

int main() {
    
print_hello_world();
    return 0;
}

Lets also add another file that would implement the print_hello_world function and call it other.cpp:

#include <iostream>

void print_hello_world() {
    std::cout << "Hello, World!" << std::endl;
}

At this point visual studio would not be able to compile the project as it will not know about other.cpp. It would be able to find the main.h file. To fix this we need to open CMakeLists.txt and modify the following line:

add_executable(Main src/main.cpp src/other.cpp src/main.h)

Though it is no need to add the header file it is a good practice to list all source files so that you can also see them listed in the solution explorer later.

You can now run build. Visual Studio will display a prompt if you want to reload the projects. Be sure to click on “Reload All”.

Using CMake GUI to build

To use the visual CMake application is even easier. As CMake is already installed on Windows you can open the “Start” menu and start typing “cmake”. Select the “CMake (cmake-gui)” that should appear as a search result.

Search for CMake in Start Menu

After you open it a window will appear where you can put on some options for generating the project files. First thing you should locate the “Where is the source code” input field and select the folder where your project resides (the root CMakeLists.txt file). Then you can select a directory where the projects will be generated by giving a value to the “Where to build the binaries”. In my case I create a separate directory but you can also just write the path to the “build” directory again. After these two fields are filled in you can click on the “Generate” button bellow. It should look something like this:

CMake GUI Window

After the projects are generated you can repeat the steps above for the new directory “build-gui”. You will also have the option to click on the “Open Project” button in the CMake GUI Window.

Using Visual Studio 2017/2019

On the latest versions of visual studio you can open alternatively open the root directory with Visual Studio. It will automatically detect that it is a CMake type of project. The benefit of opening the solution this way is that Visual Studio will not actually generate a solution. It will use another build system called “Ninja” that I will talk about in another post. This system is faster on rebuilds which makes it more efficient to compile C++ code.


You can follow up with:

  • What are CMake targets
  • How to manage dependencies in CMake: Vanilla vs Vcpkg
  • More posts on CMake
  • Posts on the topic of C++ game development

Step#1: download Cmake

  • Download the Cmake software through this link—>
  • Go to the download section
  • Select option as window’s x64 zip
  • After complete download extract files by using WinRAR software

Step#2: set binaries

  • Open the CMake folder and locate the bin folder
  • Open the bin folder and copy the path
  • C:UsersMohammed AneesDesktoplibrariesCmakecmake-3.20.1-windows-x86_64cmake-3.20.1-windows-x86_64bin

Now go to this pc—>properties—>advanced system settings—> environment variables

Select the path and edit it

Don’t delete the existing path but first, add(semicolon ; ) before the path and then paste it

In some pc, you might get a different window like below in that case you no need to add( semicolon ; ) just click new and paste  the bin path

Step#3: check whether you install it right

  • Win+x —>Go to Run —> type CMD—> then type the command cmake – -version

Step#3: Create CMake-GUI on desktop

  • Open CMake folder—>bin—> CMake-gui—> right click—> send to desktop

Mohammed Anees

Hey there, welcome to aneescraftsmanship I am Mohammed Anees an independent developer/blogger. I like to share and discuss the craft with others plus the things which I have learned because I believe that through discussion and sharing a new world opens up

Краткая инструкция по установке всех нужных для курса библиотек для Visual Studio


Содержание

На Windows рекомендуется использовать

  • Visual Studio Community Edition последней версии для разработки
  • vcpkg для установки пакетов
  • CMake для сборки некоторых библиотек

Без vcpkg каждую библиотеку придётся ставить по отдельности. Пакетный менеджер vcpkg автоматизирует скачивание и сборку библиотек на машине разработчика.

Установка CMake

Для сборки примеров потребуется CMake. Свои работы можно делать без CMake.

  • Скачайте Cmake с официального сайта
  • При установке не забудьте поменять опцию, чтобы путь к CMake был добавлен в переменную PATH

Скриншот

  • Переменные окружения, такие как PATH, передаются приложению при старте. Если вы поменяли переменную PATH, изменения вступят в силу после перезапуска программ.

Установка и использование vcpkg

Источник: blogs.msdn.microsoft.com/vcblog/2016/09/19/vcpkg-a-tool-to-acquire-and-build-c-open-source-libraries-on-windows

Пакетный менеджер vcpkg распространяется в исходниках и собирается на машине разработчика. Для сборки потребуется установленная Visual Studio с инструментами C++ разработчика.

Порядок установки описан в консольных командах:

:: Клонируем репозиторий vcpkg (ветка master)
git clone https://github.com/Microsoft/vcpkg

:: Переходим в каталог клона репозитория
cd vcpkg

:: Выполняем скрипт для сборки vcpkg
powershell -exec bypass scriptsbootstrap.ps1
:: Теперь в корне репозитория лежит vcpkg.exe, который можно вызывать
::  из каталога либо добавить в переменную окружения PATH.

:: Установка библиотеки выполняется командой install
vcpkg install sdl2:x86-windows-static sdl2:x64-windows-static

Из команды выше легко понять, что имена пакетов перечисляются по порядку, а в качестве суффикса используется так называемый “триплет”: имя_пакета:триплет.

  • Имя пакета задаёт одно из множества имён доступных библиотек.
  • Триплет задаёт архитектуру и режим сборки

Доступные триплеты:

arm-uwp.cmake
x64-uwp.cmake
x64-windows-static.cmake
x64-windows.cmake
x86-uwp.cmake
x86-windows-static.cmake
x86-windows.cmake

Для данного курса рекомендуются триплеты x86-windows-static для сборки 32-битной версии программы и x64-windows-static для сборки 64-битной версии. Суффикс static означает, что библиотеки будут собираться статически и вам не потребуется распространять DLL.

Вместо явного указания триплета для каждой библиотеки можно разом указать триплет для всех:

vcpkg --triplet x86-windows-static sdl2 sdl2-image

Последняя, но крайне важная деталь: включите автоматическую интеграцию пакетов vcpkg во все проекты Visual C++:

:: Включаем интеграцию во все проекты Visual C++ в системе.
:: При первом запуске нужны права администратора.
vcpkg integrate install

:: Удаляем интеграцию - если она вам помешала.
vcpkg integrate remove

Установка пакетов для курса

Мы используем следующие библиотеки:

  • sdl2, sdl2-image, sdl2-mixer, sdl2-ttf в целях абстрагирования от операционной системы для создания окон, растеризации текстовых надписей, загрузки изображений с диска, загрузки и проигрывания звуковых файлов
  • glbinding для прозрачного подключения нужной версии API OpenGL без необходимости вручную работать с механизмом расширений OpenGL
  • assimp3 для загрузки 3D моделей из множества форматов файлов
  • anax для построения архитектуры программы на принципах Component-Entity-System
  • bullet3 для расчёта столкновений в 3D пространстве
  • glm для работы с линейной алгеброй в рамках задач 3D графики
  • nlohmann-json для загрузки JSON
  • tinyxml2 для загрузки XML

Команда для установки 32-битных версий библиотек из исходников может выполняться долго, т.к. сборка занимает длительное время:

vcpkg --triplet x86-windows-static sdl2 sdl2-image sdl2-mixer sdl2-ttf glbinding assimp anax bullet3 glm nlohmann-json tinyxml2

Настройка gitignore для своих проектов

В Visual Studio управление настройками сборки производится в графическом режиме в окне настроек проекта, хотя сами настройки сохраняются в XML определённой схемы в файле *.vcxproj. Виртуальные папки (фильтры), по которым разложены файлы проекта, сохраняются в файле *.vcxproj.filters. Настройки проекта из раздела Debugging, а также некоторые неявные пользовательские настройки сохраняются в *.vcxproj.user. Есть общепринятые правила:

  • Файлы *.vcxproj необходимы и достаточны для сборки проекта, их следует держать под контролем версий Git, а настройки проекта изменять аккуратно
  • Файлы *.vcxproj.filters не нужны для сборки, но хранят фильтры файлов, их тоже следует держать под контролем версий Git
  • Файлы *.vcxproj.user хранят специфичные для компьютера настройки, их не следует держать в Git
  • Файлы *.sln хранят списки проектов и информацию о сборке всего списка проектов в разных конфигурациях. Их следует держать в Git.

Вы можете взять готовый шаблон файла .gitignore из репозитория github.com/github/gitignore. После добавления файла .gitignore в корень своего репозитория достаточно сделать commit, добавляющий этот файл.


I want to build my sources by Mingw compiler which in not placed on my system PATH.
I tried this in the beginning of my script:

set(Env{PATH} "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

And this:

set(CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/"   "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_LIBRARY_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PREFIX_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

The first variant doesn’t work at all. A suggest that I can’t overwrite the value of the environment variable in CMake script.
The second script finds my mingw compiler, but catches the error while running gcc (can’t find libgmp-10.dll which needs by gcc). This is because the PATH variable is not set to my Mingw.

Jason Aller's user avatar

Jason Aller

3,50728 gold badges42 silver badges38 bronze badges

asked Sep 28, 2011 at 14:10

Aleksei's user avatar

CMAKE_SYSTEM_PROGRAM_PATH is not meant to be modified, use

LIST(APPEND CMAKE_PROGRAM_PATH  "c:/MyProject/Tools/mingw/bin/" ...)

answered Aug 5, 2014 at 3:00

Ding-Yi Chen's user avatar

Ding-Yi ChenDing-Yi Chen

2,65231 silver badges27 bronze badges

You might approach it as if it were a cross compiling toolchain, even if you’re not cross compiling from Linux to Windows as in this example:

http://www.vtk.org/Wiki/CmakeMingw

After you follow that guide you set the mingw toolchain at the command line when calling cmake:

~/src/helloworld/ $ mkdir build
~/src/helloworld/ $ cd build
~/src/helloworld/build/ $ cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake

then if you’re using this a whole lot you can make an alias to limit typing in that ugly -D every time you want to regenerate makefiles:

alias mingw-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake'

answered Sep 29, 2011 at 20:27

Rian Sanderson's user avatar

Rian SandersonRian Sanderson

6,0084 gold badges28 silver badges34 bronze badges

1

Write a script file to start CMake.

On Windows make a batch file:

@echo off
set path=c:MyProjectToolsmingwbin;c:MyProjectToolsmingwmsys1.0bin
"C:Program FilesCMake 2.8bincmake-gui.exe"

On Linux make a bash script:

export PATH=$PATH:/your/path

answered Sep 30, 2011 at 20:54

Naszta's user avatar

NasztaNaszta

7,3922 gold badges33 silver badges49 bronze badges

1

I want to build my sources by Mingw compiler which in not placed on my system PATH.
I tried this in the beginning of my script:

set(Env{PATH} "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

And this:

set(CMAKE_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/"   "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_LIBRARY_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PROGRAM_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")
set(CMAKE_SYSTEM_PREFIX_PATH "c:/MyProject/Tools/mingw/bin/" "c:/MyProject/Tools/mingw/msys/1.0/bin/")

The first variant doesn’t work at all. A suggest that I can’t overwrite the value of the environment variable in CMake script.
The second script finds my mingw compiler, but catches the error while running gcc (can’t find libgmp-10.dll which needs by gcc). This is because the PATH variable is not set to my Mingw.

Jason Aller's user avatar

Jason Aller

3,50728 gold badges42 silver badges38 bronze badges

asked Sep 28, 2011 at 14:10

Aleksei's user avatar

CMAKE_SYSTEM_PROGRAM_PATH is not meant to be modified, use

LIST(APPEND CMAKE_PROGRAM_PATH  "c:/MyProject/Tools/mingw/bin/" ...)

answered Aug 5, 2014 at 3:00

Ding-Yi Chen's user avatar

Ding-Yi ChenDing-Yi Chen

2,65231 silver badges27 bronze badges

You might approach it as if it were a cross compiling toolchain, even if you’re not cross compiling from Linux to Windows as in this example:

http://www.vtk.org/Wiki/CmakeMingw

After you follow that guide you set the mingw toolchain at the command line when calling cmake:

~/src/helloworld/ $ mkdir build
~/src/helloworld/ $ cd build
~/src/helloworld/build/ $ cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake

then if you’re using this a whole lot you can make an alias to limit typing in that ugly -D every time you want to regenerate makefiles:

alias mingw-cmake='cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake'

answered Sep 29, 2011 at 20:27

Rian Sanderson's user avatar

Rian SandersonRian Sanderson

6,0084 gold badges28 silver badges34 bronze badges

1

Write a script file to start CMake.

On Windows make a batch file:

@echo off
set path=c:MyProjectToolsmingwbin;c:MyProjectToolsmingwmsys1.0bin
"C:Program FilesCMake 2.8bincmake-gui.exe"

On Linux make a bash script:

export PATH=$PATH:/your/path

answered Sep 30, 2011 at 20:54

Naszta's user avatar

NasztaNaszta

7,3922 gold badges33 silver badges49 bronze badges

1

For the Windows installer cmake-3.19.0-win64-x64.msi, these choices are presented:

  • Do not add CMake to the system PATH
  • Add CMake to the system PATH for all users
  • Add CMake to the system PATH for the current user

The default should be the most common and recommended choice. That ought to be the second one: «Add CMake to the system PATH for all users». In specialized cases where the administrator prefers one of the other options, they may certainly pick those.

Why is the change relevant? Well, chocolatey is a popular package manager, and when you install numerous packages with chocolatey you’d hope and expect they will all be functional after an installation. It’s similar to apt or yum on Linux systems.

However, what currently happens is you install a dozen packages with chocolatey, and they all work correctly EXCEPT cmake! So, cmake requires some special configuration which is inconvenient and takes time to research.

Here are some quotes from https://github.com/chocolatey-community/chocolatey-coreteampackages/issues/987

«I ran into this problem today.
I took me some time to figure it out.
I would expect to be able to execute cmake after installing cmake.
can we have this as a default?»

«The entire point of a package manager is being just an «install x» away from being able to type «x args» in the command line, with sane defaults.
If I didn’t want to add it to path, I’d look up flags. But the default with no flags should be a usable setup out of the box.»

«But maybe it’s not clear why it is not the default. Someone care to explain?»

«The default behavior should add cmake to the PATH. It is strange that this package does not add cmake to the path.»

Понравилась статья? Поделить с друзьями:
  • Как добавить steam api dll в исключения windows 10
  • Как добавить адреса в файл hosts в windows 10
  • Как добавить chromedriver в path windows
  • Как добавить chart в windows forms
  • Как добавить ssh key на github в windows 10