Liberasyon CMake 3.16 bati sistèm

Entwodwi lage yon dèlko script bati louvri kwa-platfòm CMake 3.16, ki aji kòm yon altènativ a Autotools epi ki itilize nan pwojè tankou KDE, LLVM/Clang, MySQL, MariaDB, ReactOS ak Blender. Kòd CMake ekri an C++ epi distribye anba lisans BSD.

CMake se remakab pou bay yon langaj scripting senp, yon mwayen pou pwolonje fonksyonalite atravè modil, yon kantite minimòm depandans (pa gen obligasyon pou M4, Perl oswa Python), sipò kachèt, prezans zouti pou konpilasyon kwa, sipò pou jenere bati. fichye pou yon pakèt sistèm bati ak konpilatè, prezans ctest ak sèvis piblik cpack pou defini scripts tès ak pakè bati, sèvis piblik cmake-gui pou fikse paramèt bati yon fason entèaktif.

Prensipal la amelyorasyon:

  • Te ajoute sipò pou Objective C ("OBJC") ak lang Objektif
    C++ ("OBJCXX"), ki ka aktive atravè kòmandman pwojè () ak enable_language (), apre sa kòd ki nan dosye ".m" ".mm" yo pral konpile kòm Objektif C ak Objektif C++ kòd, olye ke kòm C++, jan li te ye anvan;

  • Te ajoute sipò pou du Clang sou platfòm Solaris la;
  • Te ajoute nouvo opsyon liy lòd: "cmake -E true|false" pou enprime kòd retounen 0 ak 1; "cmake --trace-redirect=" pou redireksyon tras enfòmasyon nan yon dosye pito
    "stderr"; yo te chanje non kòmandman "cmake --loglevel" an "--log-level" pou mete l an liy ak non lòt kòmandman yo;

  • Te ajoute kòmandman "target_precompile_headers()" pou lis lis fichye header yo itilize pandan prekonpilasyon (diminye tan konstriksyon);
  • Te ajoute "UNITY_BUILD" pwopriyete a, ki aktive mòd nan pakèt pou trete dosye sous nan dèlko akselere bati a;
  • Te ajoute kòmandman "find_file()", "find_library()", "find_path()",
    "find_package()" ak "find_program()" pou fè rechèch pou fichye, bibliyotèk, chemen, pakè ak ègzèkutabl dapre varyab ki defini chemen rechèch pou divès kategori fichye.
    Varyab yo "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_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_PATH" ak "CMAKE_FIND_USE_SYSTEM_PACKAGE_ENVIRON_SYSTEM_GEPAK" ak yo itilize pou kontwole chemen rechèch baz RY";

  • Te ajoute mòd "file(GET_RUNTIME_DEPENDENCIES)" nan lòd "file()" la, ki pèmèt ou rekipere lis bibliyotèk yo itilize lè lyen dinamik yon dosye ègzèkutabl oswa bibliyotèk. Mòd la ranplase lòd GetPrerequisites() la, ki kounye a te obsolèt;
  • Kòmandman "ctest(1)" aplike kapasite pou seri tès yo baze sou resous ki nesesè pou chak tès;
  • Varyab "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" te demode epi yo ta dwe ranplase pa "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Amelyore sipò platfòm AIX. Lè w ap itilize pwopriyete "ENABLE_EXPORTS", anplis fichye ègzèkutabl la, kounye a gen yon fichye enpòte pou linker a, ki sove ak ekstansyon ".imp". Nan grefon ki kreye lè w rele "add_library()" ak opsyon "MODULE", yo ka itilize fichye sa a lè w ap fè lyen ak kòmandman "target_link_libraries()". Runtime linking sou AIX enfim pa default paske CMake kounye a bay tout enfòmasyon senbòl ki nesesè pou konekte nan moman chaj. Pou itilize lyezon exécuter nan bibliyotèk dinamik oswa modil chaje, ou dwe presize opsyon "-Wl, -G" nan lis drapo demaraj linker yo, ki defini atravè varyab "CMAKE_SHARED_LINKER_FLAGS" ak "CMAKE_MODULE_LINKER_FLAGS".

Sous: opennet.ru

Add nouvo kòmantè