ΡΠ΅Π»ΠΈΠ· ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΡΠ±ΠΎΡΠΊΠΈ , Π²ΡΡΡΡΠΏΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Autotools ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΠΊΠ°ΠΊ KDE, LLVM/Clang, MySQL, MariaDB, ReactOS ΠΈ Blender. ΠΠΎΠ΄ CMake Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ C++ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD.
CMake ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π½Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ M4, Perl ΠΈΠ»ΠΈ Python), ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΊΡΡΠ° ΡΠΈΡΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΡ ctest ΠΈ cpack Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΡΠΈΠ»ΠΈΡΠΎΠΉ cmake-gui Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ :
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠΎΠ² Objective C (Β«OBJCΒ») ΠΈ Objective
C++ (Β«OBJCXXΒ»), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ project() ΠΈ enable_language(), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ»Π°Ρ Β«.mΒ» Β«.mmΒ» Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π½Π° Objective C ΠΈ Objective C++, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π½Π° C++, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°Π½ΡΡΠ΅; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Clang Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Solaris;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ: Β«cmake -E true|falseΒ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠ΄ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ° 0 ΠΈ 1; Β«cmake βtrace-redirect=Β» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π² ΡΠ°ΠΉΠ», Π²ΠΌΠ΅ΡΡΠΎ
Β«stderrΒ»; ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«cmake βloglevelΒ» ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π° Π² Β«βlog-levelΒ» Π΄Π»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄; - ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«target_precompile_headers()Β» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ);
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Β«UNITY_BUILDΒ», Π°ΠΊΡΠΈΠ²ΠΈΡΡΡΡΠ΅Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°Ρ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«find_file()Β», Β«find_library()Β», Β«find_path()Β»,
Β«find_package()Β» ΠΈ Β«find_program()Β» Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΡΡΠ΅ΠΉ, ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΠΏΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Β«CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATHΒ», Β«CMAKE_FIND_USE_CMAKE_PATHΒ», Β«CMAKE_FIND_USE_CMAKE_SYSTEM_PATHΒ», Β«CMAKE_FIND_USE_PACKAGE_ROOT_PATHΒ», Β«CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATHΒ» ΠΈ Β«CMAKE_FIND_USE_PACKAGE_REGISTRYΒ»; - Π ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«file()Β» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Β«file(GET_RUNTIME_DEPENDENCIES)Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π Π΅ΠΆΠΈΠΌ ΠΏΡΠΈΡΡΠ» Π½Π° ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ GetPrerequisites(), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ;
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«ctest(1)Β» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΡΠΎΠ², ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°;
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRYΒ», Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«CMAKE_FIND_USE_PACKAGE_REGISTRYΒ»;
- Π£Π»ΡΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ AIX. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Β«ENABLE_EXPORTSΒ», ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ» ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ°, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠΉ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Β«.impΒ». Π ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ , ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠ·ΠΎΠ²Π° Β«add_library()Β» Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«MODULEΒ», Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«target_link_libraries()Β». Runtime-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π² AIX ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ CMake ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ runtime-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ Β«-Wl,-GΒ» Π² ΡΠΏΠΈΡΠΊΠΈ ΡΠ»Π°Π³ΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Β«CMAKE_SHARED_LINKER_FLAGSΒ» ΠΈ Β«CMAKE_MODULE_LINKER_FLAGSΒ».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
