ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows

РусскиС Π‘Π»ΠΎΠ³ΠΈ

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ установкС ΠΈ использованию VSCode CMake

ΠΎΠ±Π·ΠΎΡ€

ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CMake

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструмСнтах Make, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ GNU Make, Qmake QT, MS nmake ΠΎΡ‚ Microsoft, BSD Make (pmake), Makepp ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΈ инструмСнты Make ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ спСцификациям ΠΈ стандартам, ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ исполняСмого ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π° Makefile сильно различаСтся. Π­Ρ‚ΠΎ создаСт ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ: Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Ρ…ΠΎΡ‡Π΅Ρ‚ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠ΅, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилировано Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ инструмСнт Make, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Makefile для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ стандарта, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΠΌΠ°ΡΡˆΠ΅Π΄ΡˆΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ процСсс Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ компиляции Makefile с использованиСм CMake выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π³ΠΎΡ‚ΠΎΠ²

1. VSCode (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ установлСны)

C/C++
C++ Intellisense
CMake
CMake tools
CMake Tools Helper

2. MinGW, руководство ΠΏΠΎ установкС [ΠŸΠΎΡ€Ρ‚Π°Π»γ€‘
3.CMake

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ CMake

НастройтС CMake Π² VSCode

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ просто установитС ΠΏΠ»Π°Π³ΠΈΠ½ CMake, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ инструмСнтов компиляции. Если подсказки Π½Π΅Ρ‚ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ инструмСнтов компиляции, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ctrl + shiftl + p, ввСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° для инструмСнтов.
ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. 2c50ff1c480c5533f789ad65258ae767. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-2c50ff1c480c5533f789ad65258ae767. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2c50ff1c480c5533f789ad65258ae767. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.
CMake:Select a Kit

ИспользованиС CMake

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ создаСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ структурой:

Код main.c выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», ΠΌΡ‹ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» CMakeLists.txt ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π—Π°Ρ‚Π΅ΠΌ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Build ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ cmake

Π’Ρ‹Π²ΠΎΠ΄ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ Build создаСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ» Makefile.
ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. 015ae6e08425a4ad2626981d827b491d. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-015ae6e08425a4ad2626981d827b491d. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 015ae6e08425a4ad2626981d827b491d. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.
Π€Π°ΠΉΠ»Ρ‹, содСрТащиСся Π² ΠΏΠ°ΠΏΠΊΠ΅ Build
ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. 42ff08786a6539330ca6185a1a4d2d62. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-42ff08786a6539330ca6185a1a4d2d62. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 42ff08786a6539330ca6185a1a4d2d62. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.
На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ make Команда, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.
ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. f13f63ab2fb649895623572a96ce5f01. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-f13f63ab2fb649895623572a96ce5f01. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f13f63ab2fb649895623572a96ce5f01. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

НаконСц, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ.
ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. c34a17e979d0a1f60c19dc59291b9274. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-c34a17e979d0a1f60c19dc59291b9274. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° c34a17e979d0a1f60c19dc59291b9274. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ рСкомСндация

AlamoFire Source Severtation Series (12) ось Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (врСмСнная шкала)

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ приносит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шкалС Π² AlamoFire ΠŸΡ€Π΅ΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Timeline ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмСнная шкала ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ событиС с Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° ΡƒΠ·Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. 3160f9281f43938ca5958aee0c72f127. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-3160f9281f43938ca5958aee0c72f127. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 3160f9281f43938ca5958aee0c72f127. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

Анализ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ iOS initWithFrame, initWithCoder, awakeFromNib

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. 87727e7b5d622c260e94e5f8f7b3a065. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-87727e7b5d622c260e94e5f8f7b3a065. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 87727e7b5d622c260e94e5f8f7b3a065. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

ИсслСдованиС соотвСтствия Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… вСрсий Ρ€Π°ΠΌΡ‹

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Знакомство с CMake. Π§Π°ΡΡ‚ΡŒ 1. Установка, CMakeLists.txt, сборка.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

МногиС, ΠΊΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, пользовался ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ систСмой сборки. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, систСма сборки – это Π½Π°Π±ΠΎΡ€ инструмСнтов, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ с компилятором. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡƒ, установку, Π° Ρ‚Π°ΠΊΠΆΠ΅ сбор исходных Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΡ… компилятору ΠΈ слСТСниС Π·Π° зависимостями. Π’Π°ΠΊΠΆΠ΅ соврСмСнныС систСмы сборки ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пСрСносимыС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΅Ρ‰Ρ‘ массу Π΄Ρ€ΡƒΠ³ΠΈΡ… вкусностСй. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна популярной систСмС сборки CMake ΠΈ расскаТСт, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΅Ρ‘ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Ρ‘ использования. Она рассчитана Π½Π° Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠΌ с понятиями make, Makefile, компиляция, Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°.

Установка Π² Linux.

Для популярных дистрибутивов Linux Ρ‚ΠΈΠΏΠ° Debian, Gentoo, Fedora ΠΈ Ρ‚.Π΄. CMake Π΄Π°Π²Π½ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… рСпозиториях. Нам Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ cmake с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ устанавливаСтся Π² систСмныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈ нСобходимости ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния Π½Π΅Ρ‚Ρƒ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²

Если ΠΆΠ΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Unix/Linux Source, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cmake-3.5.0-rc3.tar.gz, распаковываСм ΠΈ собираСм:

Установка Π² Windows.

Для Windows Π½Π° сайтС CMake Π»Π΅ΠΆΠΈΡ‚ установочный Ρ„Π°ΠΉΠ» msi. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΈ установкС ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ добавлСния ΠΏΡƒΡ‚ΠΈ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния PATH для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ³Π΄Π°, послС пСрСлогинивания, CMake Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΈΠ· любого мСста. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² cmd ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Ρ‚ΠΎΡ‚ ΠΆΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Installing CMake

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 Files\CMake\bin) 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:

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

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

(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:

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:

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

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

installΠ’ΒΆ

Specify rules to run at install time.

SynopsisΠ’ΒΆ

IntroductionΠ’ΒΆ

This command generates installation rules for a project. Install rules specified by calls to the install() command within a source directory are executed in order during installation.

Changed in version 3.14: Install rules in subdirectories added by calls to the add_subdirectory() command are interleaved with those in the parent directory to run in the order declared (see policy CMP0082 ).

There are multiple signatures for this command. Some of them define installation options for files and targets. Options common to multiple signatures are covered here but they are valid only for signatures that specify them. The common options are:

Specify the directory on disk to which a file will be installed. Arguments can be relative or absolute paths.

If a relative path is given it is interpreted relative to the value of the CMAKE_INSTALL_PREFIX variable. The prefix can be relocated at install time using the DESTDIR mechanism explained in the CMAKE_INSTALL_PREFIX variable documentation.

If an absolute path (with a leading slash or drive letter) is given it is used verbatim.

As absolute paths are not supported by cpack installer generators, it is preferable to use relative paths throughout. In particular, there is no need to make paths absolute by prepending CMAKE_INSTALL_PREFIX ; this prefix is used by default if the DESTINATION is a relative path.

Specify a list of build configurations for which the install rule applies (Debug, Release, etc.). Note that the values specified for this option only apply to options listed AFTER the CONFIGURATIONS option. For example, to set separate install paths for the Debug and Release configurations, do the following:

Specify that the file is excluded from a full installation and only installed as part of a component-specific installation

Specify a name for an installed file that may be different from the original file. Renaming is allowed only when a single file is installed by the command.

Specify that it is not an error if the file to be installed does not exist.

New in version 3.1: Command signatures that install files may print messages during installation. Use the CMAKE_INSTALL_MESSAGE variable to control which messages are printed.

New in version 3.11: Many of the install() variants implicitly create the directories containing the installed files. If CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS is set, these directories will be created with the permissions specified. Otherwise, they will be created according to the uname rules on Unix-like platforms. Windows platforms are unaffected.

Installing TargetsΠ’ΒΆ

The TARGETS form specifies rules for installing targets from a project. There are several kinds of target Output Artifacts that may be installed:

Target artifacts of this kind include:

On AIX, the linker import file created for executables with ENABLE_EXPORTS enabled.

Target artifacts of this kind include:

Shared libraries, except

on macOS when marked as FRAMEWORK (see below).

Target artifacts of this kind include:

DLLs (on all Windows-based systems including Cygwin; note that the accompanying import libraries are of kind ARCHIVE ).

Object files associated with object libraries.

Both static and shared libraries marked with the FRAMEWORK property are treated as FRAMEWORK targets on macOS.

Executables marked with the MACOSX_BUNDLE property are treated as BUNDLE targets on macOS.

Any PUBLIC_HEADER files associated with a library are installed in the destination specified by the PUBLIC_HEADER argument on non-Apple platforms. Rules defined by this argument are ignored for FRAMEWORK libraries on Apple platforms because the associated files are installed into the appropriate locations inside the framework folder. See PUBLIC_HEADER for details.

For each of these arguments given, the arguments following them only apply to the target or file type specified in the argument. If none is given, the installation properties apply to all target types. If only one is given then only targets of that type will be installed (which can be used to install just a DLL or just an import library.)

The following table shows the target types with their associated variables and built-in defaults that apply when no destination is given:

Projects wishing to follow the common practice of installing headers into a project-specific subdirectory will need to provide a destination rather than rely on the above.

In addition to the common options listed above, each target can accept the following additional arguments:

New in version 3.12.

On some platforms a versioned shared library has a symbolic link such as:

Consider the following example:

In this scenario, if you choose to install only the Development component, both the headers and namelink will be installed without the library. (If you don’t also install the Libraries component, the namelink will be a dangling symlink, and projects that link to the library will have build errors.) If you install only the Libraries component, only the library will be installed, without the headers and namelink.

This option is typically used for package managers that have separate runtime and development packages. For example, on Debian systems, the library is expected to be in the runtime package, and the headers and namelink are expected to be in the development package.

See the VERSION and SOVERSION target properties for details on creating versioned shared libraries.

This option causes the installation of only the namelink when a library target is installed. On platforms where versioned shared libraries do not have namelinks or when a library is not versioned, the NAMELINK_ONLY option installs nothing. It is an error to use this parameter outside of a LIBRARY block.

When NAMELINK_ONLY is given, either NAMELINK_COMPONENT or COMPONENT may be used to specify the installation component of the namelink, but COMPONENT should generally be preferred.

The install(TARGETS) command can also accept the following options at the top level:

New in version 3.21.

This option causes all runtime dependencies of installed executable, shared library, and module targets to be added to the specified runtime dependency set. This set can then be installed with an install(RUNTIME_DEPENDENCY_SET) command.

This keyword and the RUNTIME_DEPENDENCIES keyword are mutually exclusive.

New in version 3.21.

RUNTIME_DEPENDENCIES is semantically equivalent to the following pair of calls:

where will be a randomly generated set name. The args. may include any of the following keywords supported by the install(RUNTIME_DEPENDENCY_SET) command:

The RUNTIME_DEPENDENCIES and RUNTIME_DEPENDENCY_SET keywords are mutually exclusive.

will install myExe to

The RUNTIME_DEPENDENCY_SET option causes the runtime artifacts of the imported executable, shared library, and module library targets to be added to the runtime dependency set. This set can then be installed with an install(RUNTIME_DEPENDENCY_SET) command.

Installing FilesΠ’ΒΆ

Projects wishing to follow the common practice of installing headers into a project-specific subdirectory will need to provide a destination rather than rely on the above.

Note that some of the types’ built-in defaults use the DATAROOT directory as a prefix. The DATAROOT prefix is calculated similarly to the types, with CMAKE_INSTALL_DATAROOTDIR as the variable and share as the built-in default. You cannot use DATAROOT as a TYPE parameter; please use DATA instead.

Installing DirectoriesΠ’ΒΆ

The DIRECTORY form installs contents of one or more directories to a given destination. The directory structure is copied verbatim to the destination. The last component of each directory name is appended to the destination directory but a trailing slash may be used to avoid this because it leaves the last component empty. Directory names given as relative paths are interpreted with respect to the current source directory. If no input directory names are given the destination directory will be created but nothing will be installed into it. The FILE_PERMISSIONS and DIRECTORY_PERMISSIONS options specify permissions given to files and directories in the destination. If USE_SOURCE_PERMISSIONS is specified and FILE_PERMISSIONS is not, file permissions will be copied from the source directory structure. If no permissions are specified files will be given the default permissions specified in the FILES form of the command, and the directories will be given the default permissions specified in the PROGRAMS form of the command.

New in version 3.1: The MESSAGE_NEVER option disables file installation status output.

will extract and install header files from a source tree.

Some options may follow a PATTERN or REGEX expression as described under string(REGEX) and are applied only to files or directories matching them. The EXCLUDE option will skip the matched file or directory. The PERMISSIONS option overrides the permissions setting for the matched file or directory. For example the code

Note that some of the types’ built-in defaults use the DATAROOT directory as a prefix. The DATAROOT prefix is calculated similarly to the types, with CMAKE_INSTALL_DATAROOTDIR as the variable and share as the built-in default. You cannot use DATAROOT as a TYPE parameter; please use DATA instead.

New in version 3.5: The list of dirs. given to DIRECTORY may use «generator expressions» too.

Custom Installation LogicΠ’ΒΆ

The SCRIPT form will invoke the given CMake script files during installation. If the script file name is a relative path it will be interpreted with respect to the current source directory. The CODE form will invoke the given CMake code during installation. Code is specified as a single argument inside a double-quoted string. For example, the code

will print a message during installation.

New in version 3.21: When the ALL_COMPONENTS option is given, the custom installation script code will be executed for every component of a component-specific installation. This option is mutually exclusive with the COMPONENT option.

Installing ExportsΠ’ΒΆ

-config.cmake file or the latter may be incorrectly matched by the glob and loaded.

New in version 3.7: In addition to cmake language files, the EXPORT_ANDROID_MK mode maybe used to specify an export to the android ndk build system. This mode accepts the same options as the normal export mode. The Android NDK supports the use of prebuilt libraries, both static and shared. This allows cmake to build the libraries of a project and make them available to an ndk build system complete with transitive dependencies, include flags and defines required to use the libraries.

The EXPORT form is useful to help outside projects use targets built and installed by the current project. For example, the code

will install the executable myexe to

Installs a runtime dependency set previously created by one or more install(TARGETS) or install(IMPORTED_RUNTIME_ARTIFACTS) commands. The dependencies of targets belonging to a runtime dependency set are installed in the RUNTIME destination and component on DLL platforms, and in the LIBRARY destination and component on non-DLL platforms. macOS frameworks are installed in the FRAMEWORK destination and component. Targets built within the build tree will never be installed as runtime dependencies, nor will their own dependencies, unless the targets themselves are installed with install(TARGETS).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПолноС руководство ΠΏΠΎ CMake. Π§Π°ΡΡ‚ΡŒ вторая: БистСма сборки

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. image loader. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ cmake Π½Π° windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. ΠŸΡ€ΠΈ использовании cmake для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C / C ++ Π² Windows Π²Π°ΠΌ сначала понадобится CMake, установитС срСду компиляции gcc / g ++, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ VSCode ΠΈ настройтС CMakelist.txt.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрСно использованиС систСмы сборки CMake, примСняСмой Π² колоссальном количСствС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° C/C++. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ рСкомСндуСтся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ руководства Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ нСпонимания синтаксиса языка CMake, явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π½Π° протяТСнии всСй ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Запуск CMake

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования языка CMake, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π’Π°ΠΌ слСдуСт ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ. ЭкспСримСнтируйтС с исходным ΠΊΠΎΠ΄ΠΎΠΌ, мСняя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ добавляя Π½ΠΎΠ²Ρ‹Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, установитС CMake с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

БистСма сборки CMake прСдставляСт ΠΈΠ· сСбя ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ зависимыми ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ninja ΠΈΠ»ΠΈ Make). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² самом процСссС сборки, ΠΊΠ°ΠΊ Π±Ρ‹ ΠΏΠ°Ρ€Π°Π΄ΠΎΠΊΡΠ°Π»ΡŒΠ½ΠΎ это Π½ΠΈ Π·Π²ΡƒΡ‡Π°Π»ΠΎ, ΠΎΠ½Π° нСпосрСдствСнного участия Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚.

БистСма сборки CMake ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ„Π°ΠΉΠ» CMakeLists.txt с описаниСм ΠΏΡ€Π°Π²ΠΈΠ» сборки Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ языкС CMake, Π° Π·Π°Ρ‚Π΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ сборки Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, принятых Π½Π° Π’Π°ΡˆΠ΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ названия систСмных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ компиляторов, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CMake ΠΎΡ€ΡƒΠ΄ΡƒΡŽΡ‚ лишь абстрактным понятиСм компилятора ΠΈ Π½Π΅ привязаны ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ зависимым инструмСнтам, сильно Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° вСрсии CMake

Команда cmake_minimum_required провСряСт Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ CMake: Ссли ΠΎΠ½Π° мСньшС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°, Ρ‚ΠΎ CMake Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ошибкой. ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ любого CMake-Ρ„Π°ΠΉΠ»Π°:

Как ΠΏΠΎΠ΄ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π² коммСнтариях, ΠΊΠΎΠΌΠ°Π½Π΄Π° cmake_minimum_required выставляСт всС Ρ„Π»Π°Π³ΠΈ совмСстимости (ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ cmake_policy ). НСкоторыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½ΠΈΠ·ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ CMake, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π­Ρ‚ΠΎ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€Π΅Π²Π½ΠΈΠ΅ вСрсии CMake ΠΈ мСстами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности.

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ Π½Π°Ρ‡Π°Π»Π΅ любого CMakeLists.txt слСдуСт Π·Π°Π΄Π°Ρ‚ΡŒ характСристики ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ project для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ оформлСния ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ срСдами ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ инструмСнтами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Запуск скриптовых Ρ„Π°ΠΉΠ»ΠΎΠ²

Команда include замСняСт строку своСго Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, дСйствуя Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ прСпроцСссорной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ include языков C/C++. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запускаСт скриптовый Ρ„Π°ΠΉΠ» MyCMakeScript.cmake описанной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ исходников ΠΊ Ρ†Π΅Π»ΠΈ

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ target_sources Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊ Ρ†Π΅Π»ΠΈ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹, поэтому Π½ΠΈΠΆΠ½ΠΈΠ΅ Π΄Π²Π° Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ эквивалСнтными:

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ «DLL-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ» ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ всС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, основанныС Π½Π° Windows, Π² Ρ‚ΠΎΠΌ числС ΠΈ Cygwin.

Компоновка с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°ΠΌΠΈ выполнСния.

Π Π°Π±ΠΎΡ‚Π° с цСлями

Как упомянули Π² коммСнтариях, Ρ†Π΅Π»ΠΈ Π² CMake Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Ρ€ΡƒΡ‡Π½ΠΎΠΌΡƒ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ вСсьма ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌΡƒ.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ управлСния свойствами Ρ†Π΅Π»Π΅ΠΉ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для задания процСсса сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Команда get_target_property присваиваСт прСдоставлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Ρ†Π΅Π»ΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства C_STANDARD Ρ†Π΅Π»ΠΈ MyTarget Π½Π° экран:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ Π·Π°Π΄Π°Π» Ρ†Π΅Π»ΠΈ MyTarget свойства, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° процСсс компиляции, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΏΡ€ΠΈ компиляции Ρ†Π΅Π»ΠΈ MyTarget CMake Π·Π°Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ компилятора ΠΎ использовании стандарта C11. ВсС извСстныС имСнования свойств Ρ†Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π½Π° этой страницС.

Π’Π°ΠΊΠΆΠ΅ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции if(TARGET ) :

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

Команда add_subdirectory ΠΏΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ CMake ΠΊ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ дСмонстрируСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ описанного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°:

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ области видимости ΡƒΠ½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ, Π° всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹ лишь Π΅ΠΌΡƒ (Ссли ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово PARENT_SCOPE Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ set ). Π”Π°Π½Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ упомянули Π² коммСнтариях ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Поиск ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Команда find_package Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ настройки внСшнСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½Π° примСняСтся для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Boost ΠΈ GSL. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для поиска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GSL ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ:

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, ΠΊΠΎΠΌΠ°Π½Π΄Π° find_package ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ разновидности запуска: ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ примСнял ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CMake ΠΈΡ‰Π΅Ρ‚ скриптовый Ρ„Π°ΠΉΠ» Π²ΠΈΠ΄Π° Find

Бпособы Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

Команда target_include_directories влияСт лишь Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρ†Π΅Π»ΡŒ, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ воздСйствия Π½Π΅ оказываСтся. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ дСмонстрируСт Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ:

Установка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Команда install Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ установочныС ΠΏΡ€Π°Π²ΠΈΠ»Π° для Π’Π°ΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° способна Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с цСлями, Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π‘ΠΏΠ΅Ρ€Π²Π° рассмотрим установку Ρ†Π΅Π»Π΅ΠΉ.

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ CMake всСх Π’Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ установку всСх описанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sudo checkinstall (Ссли CMake Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Makefile ), ΠΈΠ»ΠΈ ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ дСйствиС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ CMake.

Наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π”Π°Π½Π½ΠΎΠ΅ руководство Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π±Π΅Π· дСмонстрации Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования систСмы сборки CMake. Рассмотрим схСму простого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ CMake Π² качСствС СдинствСнной систСмы сборки:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π’Ρ‹ способны ΠΏΠΈΡΠ°Ρ‚ΡŒ свои ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ CMake-Ρ„Π°ΠΉΠ»Ρ‹, Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства Π±ΡƒΠ΄Π΅Ρ‚ посвящСна Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ созданию ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CMake ΠΈ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· нСдСлю. Π”ΠΎ скорых встрСч!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *