Ukukhutshwa kwenkqubo yokwakha yeCMake 3.16

Yaziswa ukukhululwa kwe-cross-platform evulekileyo yokwakhiwa kwescript yegenerator I-CMake 3.16, esebenza njengenye indlela kwi-Autotools kwaye isetyenziswa kwiiprojekthi ezinjenge KDE, LLVM/Clang, MySQL, MariaDB, ReactOS kunye neBlender. Ikhowudi ye-CMake ibhalwe kwi-C ++ kwaye isasazwe phantsi kwelayisensi ye-BSD.

I-CMake iphawuleka ngokubonelela ngolwimi olulula lokubhala, indlela yokwandisa ukusebenza ngeemodyuli, inani elincinci lokuxhomekeka (akukho nto ibophelelayo kwi-M4, i-Perl okanye i-Python), inkxaso ye-caching, ubukho bezixhobo zokudibanisa, inkxaso yokuvelisa ukwakha. iifayile kuluhlu olubanzi lweenkqubo zokwakha kunye nabaqulunqi, ubukho be-ctest kunye ne-cpack eziluncedo zokuchaza izikripthi zovavanyo kunye neepakethi zokwakha, i-cmake-gui utility yokuseta ngokudibeneyo iparameters zokwakha.

Siseko ukuphucula:

  • Inkxaso eyongeziweyo kwiNjongo C (“OBJC”) kunye neelwimi zeNjongo
    C++ ("OBJCXX"), enokuthi yenziwe ngeprojekthi () kwaye enable_language() imiyalelo, emva koko ikhowudi ekwiifayile ".m" ".mm" iya kuqulunqa njenge Objective C ne Objective C++ code, kunokuba C ++, njengoko kwakunjalo ngaphambili;

  • Inkxaso eyongeziweyo yeClang compiler kwiqonga leSolaris;
  • Kongezwe ukhetho olutsha lwelayini yomyalelo: “cmake -E true|false” ukuprinta iikhowudi zokubuya 0 kunye no-1; "cmake --trace-redirect=" ukwalathisa kwakhona ulwazi kwifayile endaweni yoko
    "stderr"; Umyalelo othi "cmake --loglevel" unikwe igama ngokutsha ube ngu "--log-level" ukuwuzisa emgceni namagama eminye imiyalelo;

  • Kongezwe umyalelo othi “target_precompile_headers()” ukudwelisa uluhlu lweefayile zeheader ezisetyenziswe ngexesha lokuhlanganiswa kwangaphambili (ukunciphisa ixesha lokwakha);
  • Yongeza ipropathi "UNITY_BUILD", eyenza imowudi yebhetshi yokucubungula iifayile zomthombo kwiijeneretha ukukhawulezisa ukwakha;
  • Imiyalelo eyongeziweyo "fumana_ifayile ()", "fumana_ilayibrari ()", "fumana_indlela ()",
    "find_package()" kunye "find_program()" ukukhangela iifayile, iilayibrari, iindlela, iipakethe kunye nezinto eziphunyezwayo ngokweenguqu ezichaza iindlela zokukhangela kwiindidi ezahlukeneyo zeefayile.
    Izinto eziguquguqukayo "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_CMGIST_ENVI esetyenzisiweyo" kunye ne-"CMAKE_FIND_USE_SYSTEM_CMGIST_ENVI_ENVI" kwaye lawula isiseko sendlela zophendlo RY";

  • Yongeza imo "yefayile(GET_RUNTIME_DEPENDENCIES)" kumyalelo "wefayile()", ekuvumela ukuba uphinde ufumane uluhlu lwamathala eencwadi asetyenziswayo xa udibanisa ifayile ephunyezwayo okanye ithala leencwadi. Indlela ithathe indawo ye GetPrerequisites() umyalelo, oyekisiweyo ngoku;
  • Umyalelo we-“ctest(1)” usebenzisa ukukwazi ukwenza iimvavanyo ngokulandelelana ngokusekelwe kwimithombo efunekayo kuvavanyo ngalunye;
  • Uguqulo oluguquguqukayo "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" luyekisiwe kwaye kufuneka endaweni yalo "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Uphuculo lwenkxaso yeqonga le-AIX. Xa usebenzisa i-"ENABLE_EXPORTS" ipropathi, ukongeza kwifayile ephunyezwayo, ifayile yokungenisa ikhonkco ngoku yenziwe, igcinwe ngesandiso ".imp". Kwii-plugins ezenziwe ngokubiza "add_library()" ngo-"MODULE" ukhetho, le fayile ingasetyenziswa xa idibanisa kusetyenziswa umyalelo othi "target_link_libraries()". Unxulumaniso lwexesha lokusebenza kwi-AIX luvaliwe ngokungagqibekanga kuba iCMake ngoku ibonelela ngolwazi oluyimfuneko lwesimboli yokudibanisa ngexesha lokulayisha. Ukusebenzisa unxulumaniso lwexesha lokuqhuba kwamathala eencwadi aguqukayo okanye iimodyuli ezilayishekayo, kufuneka ucacise ngokucacileyo ukhetho “-Wl, -G” kuludwe lweeflegi zoqaliso loqhagamshelo, ezichazwe ngokuguquguqukayo “CMAKE_SHARED_LINKER_FLAGS” kunye “CMAKE_MODULE_LINKER_FLAGS”.

umthombo: opennet.ru

Yongeza izimvo