Paglabas ng CMake 3.16 build system

Ipinasa ni paglabas ng isang cross-platform open build script generator CMake 3.16, na nagsisilbing alternatibo sa Autotools at ginagamit sa mga proyekto tulad ng KDE, LLVM/Clang, MySQL, MariaDB, ReactOS at Blender. Ang CMake code ay nakasulat sa C++ at ipinamahagi sa ilalim ng lisensya ng BSD.

Ang CMake ay kapansin-pansin sa pagbibigay ng isang simpleng scripting language, isang paraan ng pagpapalawak ng functionality sa pamamagitan ng mga module, isang minimal na bilang ng mga dependency (walang binding sa M4, Perl o Python), suporta sa pag-cache, pagkakaroon ng mga tool para sa cross-compilation, suporta para sa pagbuo ng build mga file para sa malawak na hanay ng mga build system at compiler, ang presensya ng ctest at cpack na mga utility para sa pagtukoy ng mga test script at mga building package, cmake-gui utility para sa interactive na pagtatakda ng mga parameter ng build.

Ang pangunahing mga pagpapabuti:

  • Nagdagdag ng suporta para sa Objective C (β€œOBJC”) at Objective na mga wika
    C++ ("OBJCXX"), na maaaring paganahin sa pamamagitan ng project() at enable_language() na mga utos, kung saan ang code sa ".m" ".mm" na mga file ay isasama bilang Objective C at Objective C++ code, sa halip na bilang C++, tulad ng dati;

  • Nagdagdag ng suporta para sa Clang compiler sa Solaris platform;
  • Nagdagdag ng mga bagong opsyon sa command line: "cmake -E true|false" para mag-print ng mga return code 0 at 1; "cmake --trace-redirect=" upang i-redirect ang trace na impormasyon sa isang file sa halip
    "stderr"; ang "cmake --loglevel" na utos ay pinalitan ng pangalan sa "--log-level" upang maiugnay ito sa mga pangalan ng iba pang mga utos;

  • Idinagdag ang command na "target_precompile_headers()" upang ilista ang listahan ng mga file ng header na ginamit sa panahon ng precompilation (binabawasan ang oras ng build);
  • Idinagdag ang property na "UNITY_BUILD", na nag-a-activate sa batch mode para sa pagproseso ng mga source file sa mga generator upang mapabilis ang pagbuo;
  • Nagdagdag ng mga command na "find_file()", "find_library()", "find_path()",
    "find_package()" at "find_program()" para maghanap ng mga file, library, path, package at executable ayon sa mga variable na tumutukoy sa mga path ng paghahanap para sa iba't ibang kategorya ng mga file.
    Ang mga variable na "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_FINDAGE" ay ginamit sa "CMAKE_FIND_USE_SYSTEM_FINDAGE" at kontrolin ang base search path GISTRY";

  • Idinagdag ang mode na "file(GET_RUNTIME_DEPENDENCIES)" sa command na "file()", na nagbibigay-daan sa iyong muling kunin ang listahan ng mga library na ginagamit kapag dynamic na nagli-link ng isang executable na file o library. Pinalitan ng mode ang GetPrequisites() command, na ngayon ay hindi na ginagamit;
  • Ang command na "ctest(1)" ay nagpapatupad ng kakayahang mag-serialize ng mga pagsubok batay sa mga mapagkukunang kinakailangan para sa bawat pagsubok;
  • Ang variable na "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" ay hindi na ginagamit at dapat palitan ng "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Pinahusay na suporta sa platform ng AIX. Kapag ginagamit ang property na "ENABLE_EXPORTS", bilang karagdagan sa executable na file, nabubuo na ngayon ang isang import file para sa linker, na naka-save gamit ang ".imp" na extension. Sa mga plugin na ginawa sa pamamagitan ng pagtawag sa "add_library()" gamit ang opsyong "MODULE", maaaring gamitin ang file na ito kapag nagli-link gamit ang command na "target_link_libraries()". Ang pag-link ng runtime sa AIX ay hindi pinagana bilang default dahil ibinibigay na ngayon ng CMake ang lahat ng kinakailangang impormasyon ng simbolo para sa pag-link sa oras ng pagkarga. Upang gumamit ng runtime na pag-link ng mga dynamic na library o loadable modules, dapat mong tahasang tukuyin ang mga opsyon na β€œ-Wl, -G” sa mga listahan ng mga linker startup flag, na tinukoy sa pamamagitan ng mga variable na β€œCMAKE_SHARED_LINKER_FLAGS” at β€œCMAKE_MODULE_LINKER_FLAGS”.

Pinagmulan: opennet.ru

Magdagdag ng komento