Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ cmake list
ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ CMake. Π§Π°ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
CMake β ΡΡΠΎ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠΈΠ»ΠΈΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° C/C++. ΠΠ°ΠΏΠΈΡΠ°Π² ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ Π²ΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΡ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΠ°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π»ΡΠ±ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , Π³Π΄Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ CMake.
Π―Π·ΡΠΊ CMake, Π±ΡΠ΄ΡΡΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π² Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ±ΠΎΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Makefile ΠΈΠ»ΠΈ Ninja), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠ΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. Π ΠΠ°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ, Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΡΡ Π»ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π‘ Π½ΠΈΡ ΠΌΡ ΠΈ Π½Π°ΡΠ½ΡΠΌ.
ΠΠ°ΠΏΡΡΠΊ CMake
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° CMake, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ. ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΌΠ΅Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½ΠΎΠ²ΡΠ΅. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ CMake Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°.
ΠΠΎΠΌΠ°Π½Π΄Ρ
ΠΠΎΠΌΠ°Π½Π΄Ρ Π² CMake ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΅Ρ ΠΈΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΉ ΠΎΠ±ΡΠ°ΠΌΠ»ΡΠ½Π½ΡΠ΅ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΎΡΠ΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ². Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ message ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ:
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΎΠ±ΡΠ°ΠΌΠ»ΡΠ½Π½ΡΠ΅ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅ΠΎΠ±ΡΠ°ΠΌΠ»ΡΠ½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π²Π΅ΡΠ΅ΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ()#»\ ΠΈ ΠΏΡΠΎΠ±Π΅Π»Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅Ρ:
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ΅ΡΡΡΠΊΠΈ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Ρ. Π’Π΅ΠΊΡΡ, Π·Π°ΠΊΠ»ΡΡΡΠ½Π½ΡΠΉ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° Π½Π° Π΅Ρ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΈΠΌΠ΅ΡΡ Π²ΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
ΠΠΏΡΠΈΠΈ
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: ΠΏΡΠ°Π²Π΄Π° ΠΈΠ»ΠΈ Π»ΠΎΠΆΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 52 LESS 58 ΠΎΠ±ΡΠ°ΡΠΈΡΡΡ Π² ΠΏΡΠ°Π²Π΄Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ 52 88 EQUAL 88 ΠΎΠ±ΡΠ°ΡΠΈΡΡΡ Π² ΠΏΡΠ°Π²Π΄Ρ, 63 GREATER 104 ΠΎΠ±ΡΠ°ΡΠΈΡΡΡ Π² Π»ΠΎΠΆΡ. Π‘ΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π°, Π½ΠΎ ΠΈ ΡΡΡΠΎΠΊΠΈ, Π²Π΅ΡΡΠΈΠΈ, ΡΠ°ΠΉΠ»Ρ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΊ ΡΠΏΠΈΡΠΊΡ ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ.
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² CMake ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ 5 > 1. ΠΡΠΎΡΠΎΠ΅ ΠΈ ΡΡΠ΅ΡΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π»ΠΎΠΆΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ 5 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ. ΠΠ»ΠΎΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ elseif ΠΈ else Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, Π° endif ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π° ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
Π¦ΠΈΠΊΠ»Ρ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ CMake ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅. ΠΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²: ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΌΠ°ΠΊΡΠΎΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π° ΠΏΡΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΎΠΌΠ°Π½Π΄Π° function ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΠΌΡ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ β ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΡ Π»ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π½Π°ΡΠΈΡ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΈΠ΄Π½Ρ Π»ΠΈΡΡ Π΅ΠΉ ΡΠ°ΠΌΠΎΠΉ.
ΠΠ°ΠΊΡΠΎΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌ Π·Π° ΡΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ: Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
Π Π°Π·Π±ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΠΠΎΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ cmake_parse_arguments ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠ°Π·Π±ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ.
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π±Π·Π°Ρ), ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ.
Π Π°Π±ΠΎΡΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ°Π·Π±ΠΎΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΈΠ΄Π°
ΠΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΡ ΡΠ·Π½Π°Π»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² CMake ΠΌΠΎΠ³ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΈΡΠ°ΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ (Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ Π΅ΡΡΡ Π²Π΅Π·Π΄Π΅), Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΡΡΠ½ΠΊΡΠΈΡΡ . Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΠΊΡΡ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ ΡΡΠΎΠ»Ρ ΡΠ°ΡΡΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ° ΡΡΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° CMake Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ°ΡΡΡ Π²ΡΠΉΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ Π΄Π½Π΅ΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ CMake. ΠΠΎ ΡΠΊΠΎΡΡΡ Π²ΡΡΡΠ΅Ρ!
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ 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 ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΠΎΡ ΠΆΠ΅
CMake Tutorial
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
Π§ΡΠΎ ΡΡΠΎ ΠΈ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
CMake β ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΎΠ½Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Makefile, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ make.
CMake ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ , ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. Π’.Π΅. Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΡΡΠ° ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°ΠΉΠ»ΠΈΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ cmake, ΠΈ ΡΡΠΎΠ±Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡ ΡΡΠΎ Π΄Π΅Π»ΠΎ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΌ cmake, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²ΡΡ ΡΠ°ΠΌ. Π£Π΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΡΠΎΡΡΠΎ.
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠ»ΠΈ Π½Π΅Ρ ΠΆΠ΅Π»Π°Π½ΠΈΡ/Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ/ΡΠΈΠ» ΡΠΈΡΠ°ΡΡ Π²Π΅ΡΡ ΡΡΡΠΎΡΠΈΠ°Π» ΠΈ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ QtCreator (ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ IDE, ΡΠΌΠ΅ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ cmake), ΡΠΎ:
ΠΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
Π‘ΡΠ°ΡΡ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π°ΠΉΡΠΈ ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΌ cmake ΡΡ, %username%, Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. //Π° Π΅ΡΠ»ΠΈ Π½Π΅Ρ?
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ ΠΠ°Ρ Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ΠΊ «test.cpp» (// Π° Π΅ΡΠ»ΠΈ Π½Π΅Ρ?)(Π Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ CMake ΡΠ΅Π±Π΅ ΡΡΠΎΠ³Π°ΡΡ ΡΠ°Π½ΠΎ). ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»ΠΈΠΊ Π΄Π»Ρ cmake, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ «CMakeLists.txt», ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΄Π° Π²ΠΎΡ ΡΡΠΎ:
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ (ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ) Π² ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ «cmake CMakeLists.txt» (Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ», Π½ΠΎ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ Π»Π΅ΠΆΠΈΡ, ΡΠΎΠ³Π΄Π° cmake Π½Π°ΠΉΠ΄Π΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΌ).
Π Ρ ΠΠ°Ρ Π² ΠΏΠ°ΠΏΠΎΡΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» «test». ΠΠ°ΠΏΡΡΡΠΈΡΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° «test.cpp».
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠΎΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ cmake.
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ cmake [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎΡ cmake-ΡΠ°ΠΉΠ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π‘ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ cmake (ΡΠΈΡΠ°ΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ).
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π cmake ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎΠΌΠ°Π½Π΄Π°
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΊΠΈΠΉ ΡΠ΅ΠΊΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΡΠ΅’Π³Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠΎΡΡΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π΅ΡΠ°ΠΉΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡe ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π² ΠΊΠΎΠ΄Π΅ ΡΠ΅ΡΠ΅Π·, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, #ifdef SOME_IMPORTANT_DEFINITION.
ΠΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ: «-std=c++11» Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² gcc ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° c++11, «-Wall» Π³ΠΎΠ²ΠΎΡΠΈΡ gcc Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ (ΠΎΡΠ΅Π½Ρ ΡΠΎΠ²Π΅ΡΡΡ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π³Π»ΡΠΏΡΡ Π±Π°Π³ΠΎΠ² ΠΈ ΠΏΠΈΡΠ°ΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄).
ΠΠ°ΠΏΠΊΠ° Ρ Ρ Π΅Π΄Π΅ΡΠ°ΠΌΠΈ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΡ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Ρ Π΅Π΄Π΅ΡΡ (ΡΠ°ΠΉΠ»ΠΈΠΊΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ΅ΡΠ΅Π· #include) ΠΈΡΠΊΠ°Π»ΠΈΡΡ Π΅ΡΠ΅ ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ «headers/» ΠΈ «more_headers/»:
ΠΠ°Π΄Π΅ΡΡΡ, ΠΈ ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
ΠΠ°ΡΡΠΈΠΌΡΡ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ cmake Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Boost. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π±ΡΡΡΠ°:
ΠΡΠ°ΠΊ, ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠ»Π°Π³ΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΉΠ΄Π΅ΠΌ Π±ΡΡΡ!
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±ΡΡΡΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ chrono (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ) ΠΈ filesystem (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ):
Win, Π±ΡΠ΄ΡΡ ΠΈΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Boost_LIBRARIES.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ Ρ Π΅Π΄Π΅ΡΠ°ΠΌΠΈ Π±ΡΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² Π½ΠΈΡ Ρ Π΅Π΄Π΅ΡΠΎΠ²:
ΠΡΠ°ΠΊ, ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΠΈ ΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ. cmake Π½Π°ΡΠ΅Π» ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ°Π» Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΡΠ΅ΠΌ ΠΌΡ ΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ.
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ target ΡΠ±ΠΎΡΠΊΠΈ (ΡΠ΅ΡΠ΅Π· add_executable).
ΠΡΠΈΠΌΠ΅Ρ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ CMakeLists.txt ΠΈ Π³Π΄Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π»Π΅ΠΆΠ°ΡΡ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠ°ΠΊ, ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ. Π£ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ (ΠΎΡΠ½ΡΠ½Π΅ ΡΡΠΈΡΠ°Π΅ΠΌ Π΅Π΅ «/sources»), ΠΈ Π² Π½Π΅ΠΉ Π»Π΅ΠΆΠ°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ
Π ΠΊΠΎΡΠ½Π΅ «/» Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» «/CMakeLists.txt»:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΊΠΎΡΠ½Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ:
ΠΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ Π΅Π΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ [ ΠΏΡΠ°Π²ΠΈΡΡ ]
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π΅Π»Π°ΡΡ #include «lib.h» (ΡΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ target_include_directories).
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CMake Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ QtCreator [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ cmake Ρ QtCreator Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΠ½Π°Ρ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Qt, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ «ΠΡΠΎΠ΅ΠΊΡ Π½Π° Π‘++ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CMake». Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΈΡ Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ.
ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ header Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ Π±ΡΠ»ΠΎ Π²ΠΈΠ΄Π½ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² [ ΠΏΡΠ°Π²ΠΈΡΡ ]
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°ΠΉΠ» header.h Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΎΡΠΊΡ
ΠΠ°ΠΏΠΈΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°
ΠΡΠ½ΠΎΠ²Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Π‘/C++ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ CMake
ΠΠ΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π·Π°Π΄ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Autotools. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Autotools Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠΎΡ ΡΡΡΠ΄Π½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΎΡΠΎΠ±ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ½ ΡΠΎΠ»ΡΠΊΠΎ Π² *nix ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π° Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ Windows ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Autotools, ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°ΠΊ, Π²Π΅ΡΡΠΌΠ° Π½Π΅ΠΏΡΠΎΡΡΠΎ. Π ΠΎΠ±ΡΠ΅ΠΌ, Autotools β ΡΡΠΎ Π»Π΅Π³Π°ΡΠΈ, ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π² Π½Π°ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CMake ΠΈΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SCons. Π ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ CMake.
ΠΠΎΠ²ΠΎΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, CMake β ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΠΎΠ½Π° Π²Π°ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ MakefileβΡ Π² *nix ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΏΡΠΎΠ΅ΠΊΡΡ Visual Studio ΠΏΠΎΠ΄ Windows, ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² ΠΈ IDE, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Sublime Text, Code::Blocks, Eclipse ΠΈΠ»ΠΈ KDevelop, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΏΠΎΡΠ½ΡΠΉ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ CMake ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π² ΠΌΠΈΡΠ΅ C/C++. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, CMake ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² LLVM, Qt, MariaDB, Blender, KiCad, GNU Radio ΠΈ ΡΡΠ΄Π΅ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² CLion, IDE Π΄Π»Ρ C/C++ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° CMake.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CMake Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π ΠΊΠΎΡΠ½Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» CMakeLists.txt ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ:
cmake_minimum_required ( VERSION 3.1 )
# ΡΠ°ΠΊ ΠΏΠΈΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
find_library ( PTHREAD_LIBRARY pthread )
find_library ( PCRE_LIBRARY pcre )
add_executable ( main src/Main.cpp src/HttpServer.cpp )
Π₯ΠΎΡΠ΅ΡΡΡ Π½Π°Π΄Π΅ΡΡΡΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΡΡΡΠΎΡΠΊΠ° Π·Π΄Π΅ΡΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΠΏΠΎΡΡΠ½ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ src, Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ β Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ include. ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π³ΠΎΠ²ΠΎΡΠΈΠΌ:
ΠΡΠΎΡΡΠΎ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ?
ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ find_library Π² CMake Π΅ΡΡΡ ΡΡΠ΄ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ OpenGL ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ:
find_package ( OpenGL REQUIRED )
CMake ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ MakefileβΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅:
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ninja:
ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈ ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊ:
ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΠΏΡΡΠΌΡΡ make ΠΈΠ»ΠΈ ninja ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°
β¦ Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
Π ΠΌΠΈΡΠ΅ C/C++ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ CMake, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π±ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Git. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ:
cmake_minimum_required ( VERSION 2.8 )
include_directories ( deps/algorithms/include )
add_subdirectory ( deps/algorithms/src )
add_executable ( rbtree_example rbtree_example.c )
target_link_libraries ( rbtree_example CAlgorithms )
Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» src/CMakeList.txt Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ:
cmake_minimum_required ( VERSION 2.8 )
add_library ( CAlgorithms STATIC
struct/ilist.c
struct/rbtree.c
struct/htable.c
common/utils.c
)
ΠΠΎΠΎΠ±ΡΠ΅, add_subdirectory ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΡΡ Π΄ΠΎ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΡΠ°ΠΉΠ» CMakeLists.txt. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠΏΡΡΡ ΠΆΠ΅, Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠ½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CMakeList.txt ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
cmake_minimum_required ( VERSION 2.8 )
add_subdirectory ( src )
add_subdirectory ( test )
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
cmake_minimum_required ( VERSION 2.8 )
add_executable ( test_htable test_htable.c )
target_link_libraries ( test_htable CAlgorithms )
add_executable ( test_rbtree test_rbtree.c )
target_link_libraries ( test_rbtree CAlgorithms )
add_test ( test_htable «./test_htable» )
add_test ( test_rbtree «./test_rbtree» )
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
β¦ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ build. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΡΠ΅ΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π½Π° C++, ΠΎΠ½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΠΊΡΡΡΠ° Π² Π·Π°ΠΌΠ΅ΡΠΊΠ΅ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° C++ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Google Test.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ PyTest, ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠΏΠΈΡΠΈΡΠ΅ Π² CMakeList.txt ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
find_package ( PythonInterp REQUIRED )
ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΡΡΠΎΠ² ΠΏΠΈΡΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ» Testing/Temporary/LastTest.log. ΠΡΡΠ°ΡΠΈ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² CMake, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ CMAKE_SOURCE_DIR, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π²ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Assimp ΠΈ LLDB. ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠΏΡΠΈΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΊ:
ΠΠΏΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π² ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈ ΡΠ΅ΡΠ΅Π· curses-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ CMake. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Ρ Π²Π°ΡΠΈΡΡ Π² 90% ΡΠ»ΡΡΠ°Π΅Π². ΠΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CMake Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠΎΠΌ, ΡΡΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Π½Π° GitHub. ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠΈΠΉ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Assimp ΠΈ LLDB. ΠΡ ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΌΠ°ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ CMake.
Π ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Π»ΠΈ Π²Ρ CMake ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅?
ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ CMake. Π§Π°ΡΡΡ Π²ΡΠΎΡΠ°Ρ: Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ 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 ΠΈ Π²ΡΠΉΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅Π΄Π΅Π»Ρ. ΠΠΎ ΡΠΊΠΎΡΡΡ Π²ΡΡΡΠ΅Ρ!