ИзданиС Π½Π° систСма Π·Π° сборка CMake 3.16

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Ρ€Π΅Π»ΠΈΠ· Π½Π° кросплатформСн Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° сцСнарии Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ CMake 3.16, ΠΊΠΎΠΉΡ‚ΠΎ слуТи ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster