ukukhululwa kwe-cross-platform open build script generator , esebenza njengenye indlela ye-Autotools futhi isetshenziswa kumaphrojekthi afana ne-KDE, LLVM/Clang, MySQL, MariaDB, ReactOS kanye ne-Blender. Ikhodi ye-CMake ibhalwe ngo-C++ futhi isatshalaliswa ngaphansi kwelayisensi ye-BSD.
I-CMake iphawuleka ngokunikeza ulimi olulula lokubhala, indlela yokwandisa ukusebenza ngamamojula, inani elincane lokuncika (akukho ukubophezela ku-M4, i-Perl noma i-Python), ukusekelwa kwe-caching, ukuba khona kwamathuluzi okuhlanganiswa okuphambene, ukusekelwa kokukhiqiza isakhiwo. amafayela ezinhlobonhlobo zezinhlelo zokwakha nabahlanganisi, izinsiza zokubakhona ze-ctest ne-cpack zokuchaza imibhalo yokuhlola namaphakheji wokwakha, insiza ye-cmake-gui yokusetha ngokuhlanganyela imingcele yokwakha.
main :
- Usekelo olungeziwe lwe-Objective C (“OBJC”) nezilimi zeNjongo
I-C++ ("OBJCXX"), enganikwa amandla ngephrojekthi() kanye nemiyalo ye-enable_language(), ngemva kwalokho ikhodi kumafayela ".m" ".mm" izohlanganiswa njengekhodi ye-Objective C kanye ne-Objective C++, esikhundleni sokuthi C++, njengoba kwakunjalo ngaphambili; - Ukwesekwa okwengeziwe komhlanganisi we-Clang ku-platform ye-Solaris;
- Kwengezwe izinketho zomugqa womyalo omusha: “cmake -E true|false” ukuze uphrinte amakhodi okubuyisela 0 kanye no-1; "cmake --trace-redirect=" ukuze uqondise kabusha ulwazi lokulandelela efayeleni esikhundleni salokho
"stderr"; umyalo othi "cmake --loglevel" uqanjwe kabusha ukuze uthi "--log-level" ukuze uhambisane namagama weminye imiyalo; - Kwengezwe umyalo othi “target_precompile_headers()” ukuze kuhlu uhlu lwamafayela anhlokweni asetshenziswe phakathi nokuhlanganiswa kwangaphambili (kunciphisa isikhathi sokwakha);
- Kwengezwe isakhiwo se-“UNITY_BUILD”, esenza kusebenze imodi yenqwaba yokucubungula amafayela omthombo kumajeneretha ukuze kusheshiswe ukwakha;
- Imiyalo eyengeziwe ethi “find_file()”, “find_library()”, “find_path()”,
"find_package()" kanye "find_program()" ukucinga amafayela, imitapo yolwazi, izindlela, amaphakheji nokusebenziseka ngokuvumelana neziguquko ezichaza izindlela zokusesha zezigaba ezihlukahlukene zamafayela.
Okuguquguqukayo okungu-"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_CMGMENT_ENVIK kusetshenzisiwe" kanye "ku-"CMAKE_FIND_USE_SYSTEM_IDGMENT_ENVI". lawula izindlela zokusesha eziyisisekelo ISTRY"; - Kwengezwe imodi “yefayela(GET_RUNTIME_DEPENDENCIES)” kumyalo we-“file()”, okuvumela ukuthi ubuyisele ngokuphindaphindiwe uhlu lwamalabhulali asetshenziswa lapho uxhumanisa ifayela elisebenzisekayo noma umtapo wolwazi. Imodi ithathe indawo yomyalo we-GetPrerequisites(), ohoxisiwe manje;
- Umyalo we-“ctest(1)” usebenzisa ikhono lokulinganisa ukuhlola ngokusekelwe kuzinsiza ezidingekayo ekuhlolweni ngakunye;
- Okuhlukile kokuthi "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" kwehlisiwe futhi kufanele kufakwe esikhundleni sika-"CMAKE_FIND_USE_PACKAGE_REGISTRY";
- Usekelo lweplathifomu ye-AIX ethuthukisiwe. Uma usebenzisa isakhiwo se-"ENABLE_EXPORTS", ngaphezu kwefayela elisebenzisekayo, ifayela lokungenisa lesixhumanisi liyakhiqizwa, lilondolozwe ngesandiso se-".imp". Kuma-plugin adalwe ngokubiza okuthi "add_library()" ngenketho ethi "MODULE", leli fayela lingasetshenziswa lapho kuxhunywa kusetshenziswa umyalo othi "target_link_libraries()". Ukuxhumanisa kwesikhathi sokusebenza ku-AIX kukhutshazwe ngokuzenzakalela ngenxa yokuthi i-CMake manje inikeza lonke ulwazi lophawu oludingekayo ukuze lixhunywe ngesikhathi sokulayisha. Ukuze usebenzise ukuxhumanisa kwesikhathi sokusebenza kwamalabhulali ashintshashintshayo noma amamojula alayishekayo, kufanele ucacise izinketho “-Wl, -G” ohlwini lwamafulegi okuqalisa isixhumanisi, achazwe ngezinto ezihlukile “CMAKE_SHARED_LINKER_FLAGS” kanye “CMAKE_MODULE_LINKER_FLAGS”.
Source: opennet.ru
