ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΊΡΠΎΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π·Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ , ΠΊΠΎΠΉΡΠΎ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° 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()β. Π untime Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°ΡΠ° Π² AIX Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ CMake ΡΠ΅Π³Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ»Π°ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ runtime Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π°Ρ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠΈΠΈ β-Wl,-Gβ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΡΠ»Π°Π³ΠΎΠ²Π΅ Π·Π° Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΈ ΠΏΡΠ΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ βCMAKE_SHARED_LINKER_FLAGSβ ΠΈ βCMAKE_MODULE_LINKER_FLAGSβ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
