rilascio del generatore di script di build open-source multipiattaforma , che funge da alternativa ad Autotools e viene utilizzato in progetti come KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. Il codice di CMake Γ¨ scritto in C++ e distribuito con licenza BSD.
CMake Γ¨ noto per fornire un semplice linguaggio di scripting, estensibilitΓ delle funzionalitΓ tramite moduli, un numero minimo di dipendenze (senza legami con M4, Perl o Python), supporto per il caching, strumenti per la cross-compilazione, generazione di file di build per una vasta gamma di sistemi di build e compilatori, utility ctest e cpack per definire script di test e di packaging, e l'utility cmake-gui per la configurazione interattiva delle impostazioni di build.
Principali :
- Π Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ±ΠΎΡΠΎΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π½Π° Π±Π°Π·Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ninja Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠ° , ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Apple;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Clang Π΄Π»Ρ Windows, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ±ΠΎΡΠΊΡ Ρ ABI MSVC, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΡΠΈΠ»Π΅ GNU;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ CMAKE_MSVC_RUNTIME_LIBRARY ΠΈ MSVC_RUNTIME_LIBRARY Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° runtime-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ Π½Π° Π±Π°Π·Π΅ ABI MSVC (MS Visual Studio);
- ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ MSVC, Π² CMAKE__FLAGS ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΠ»Π°Π³ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Β«/W3Β»;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Β«COMPILE_LANG_AND_ID:Β» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ CMAKE__COMPILER_ID ΠΈ LANGUAGE Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΊΠΎΠ΄ΠΎΠΌ;
- Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° C_COMPILER_ID, CXX_COMPILER_ID,
CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
COMPILE_LANG_AND_ID ΠΈ PLATFORM_ID Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π·Π°ΠΏΡΡΠΎΠΉ; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ CMAKE_FIND_PACKAGE_PREFER_CONFIG, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ·ΠΎΠ² find_package() Π±ΡΠ΄Π΅Ρ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ°;
- ΠΠ»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΉΡΡΠ² PUBLIC_HEADER ΠΈ PRIVATE_HEADER, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ install(TARGETS) ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² PUBLIC_HEADER ΠΈ PRIVATE_HEADER;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ CMAKE_VS_JUST_MY_CODE_DEBUGGING ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ VS_JUST_MY_CODE_DEBUGGING Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° Β«Just My CodeΒ» Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅ Visual Studio ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ MSVC cl 19.05 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ;
- ΠΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½ ΠΌΠΎΠ΄ΡΠ»Ρ FindBoost, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ°Ρ Config ΠΈ Module ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ°;
- Π ΠΊΠΎΠΌΠ°Π½ΠΆΡ message() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠΏΠΎΠ² NOTICE, VERBOSE,
DEBUG ΠΈ TRACE; - ΠΠΎΠΌΠ°Π½Π΄Π° Β«export(PACKAGE)Β» ΡΠ΅ΠΏΠ΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠΊΠ° ΡΠ²Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ CMAKE_EXPORT_PACKAGE_REGISTRY.
Fonte: opennet.ru
