CMake 3.16 တည်ဆောက်မှုစနစ်ကို ဖြန့်ချိသည်။

မိတ်ဆက်ပေးသည်။ cross-platform တွင် open build script generator ကို ထုတ်ပေးသည်။ CMake ၃.၁၇Autotools ၏ အခြားရွေးချယ်စရာအဖြစ် လုပ်ဆောင်ပြီး KDE၊ LLVM/Clang၊ MySQL၊ MariaDB၊ ReactOS နှင့် Blender ကဲ့သို့သော ပရောဂျက်များတွင် အသုံးပြုပါသည်။ CMake ကုဒ်ကို C++ ဖြင့် ရေးသားထားပြီး BSD လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

CMake သည် ရိုးရှင်းသော scripting language၊ modules များမှတဆင့်လုပ်ဆောင်နိုင်စွမ်းကိုတိုးချဲ့ခြင်းနည်းလမ်းများ၊ အနည်းငယ်မျှသောမှီခိုမှုအရေအတွက် (M4၊ Perl သို့မဟုတ် Python နှင့်ဆက်စပ်မှုမရှိသော)၊ caching ပံ့ပိုးမှု၊ cross-compilation အတွက် tools များပါဝင်မှု၊ တည်ဆောက်မှုဖန်တီးရန်ပံ့ပိုးမှုတို့အတွက် မှတ်သားဖွယ်ကောင်းပါသည်။ တည်ဆောက်မှုစနစ်များနှင့် စုစည်းမှုများစွာအတွက် ဖိုင်များ၊ စမ်းသပ် script များနှင့် တည်ဆောက်မှုပက်ကေ့ချ်များကို သတ်မှတ်ခြင်းအတွက် တည်ရှိမှု ctest နှင့် cpack utilities၊ တည်ဆောက်မှုဘောင်များကို အပြန်အလှန်တုံ့ပြန်ရန်အတွက် cmake-gui utility။

အဓိက တိုးတက်မှုများ:

  • Objective C (“OBJC”) နှင့် Objective languages ​​များအတွက် ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။
    C++ ("OBJCXX") ကို project() နှင့် enable_language() commands များမှတဆင့်ဖွင့်နိုင်သည်၊ ထို့နောက် ".m" ".mm" ဖိုင်များတွင်ကုဒ်ကို Objective C နှင့် Objective C++ ကုဒ်အဖြစ်မဟုတ်ဘဲ၊ အရင်ကလို C++၊

  • Solaris ပလပ်ဖောင်းပေါ်ရှိ Clang compiler အတွက် ပံ့ပိုးမှု ပေါင်းထည့်ထားသည်။
  • ကုဒ် 0 နှင့် 1 တို့ကို ပရင့်ထုတ်ရန် “cmake -E true|false”၊ "cmake --trace-redirect=" အစား ခြေရာခံအချက်အလက်ကို ဖိုင်တစ်ခုသို့ ပြန်ညွှန်းရန် "cmake --trace-redirect="
    "stderr"; "cmake --loglevel" အမိန့်ကို အခြား command များ၏ အမည်များနှင့် လိုက်လျောညီထွေဖြစ်စေရန်အတွက် "--log-level" သို့ အမည်ပြောင်းထားသည်။

  • precompilation အတွင်းအသုံးပြုသည့် ခေါင်းစီးဖိုင်များစာရင်းကို စာရင်းပြုစုရန် "target_precompile_headers()" အမိန့်ကို ပေါင်းထည့်ခဲ့သည် (တည်ဆောက်ချိန်ကို လျှော့ချသည်)။
  • တည်ဆောက်မှုကို အရှိန်မြှင့်ရန် ဂျင်နရေတာများတွင် ရင်းမြစ်ဖိုင်များကို လုပ်ဆောင်ရန်အတွက် အစုလိုက်မုဒ်ကို အသက်သွင်းပေးသည့် “UNITY_BUILD” ပိုင်ဆိုင်မှုကို ထည့်သွင်းထားသည်။
  • ထည့်သွင်းထားသော command များမှာ “find_file()”၊ “find_library()”၊ “find_path()”၊
    ဖိုင်အမျိုးအစားအမျိုးမျိုးအတွက် ရှာဖွေမှုလမ်းကြောင်းများကို သတ်မှတ်ပေးသည့် variable များအလိုက် ဖိုင်များ၊ စာကြည့်တိုက်များ၊ လမ်းကြောင်းများ၊ ပက်ကေ့ဂျ်များနှင့် executable များကို ရှာဖွေရန် "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_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ROOT_PATH", "CMAKE_FIND_FIND_CEM" E_PACKAGE_REGIST"ကို အခြေခံရှာဖွေမှုလမ်းကြောင်း RY" ကို ထိန်းချုပ်ရန် အသုံးပြုပါသည်။

  • “file(GET_RUNTIME_DEPENDENCIES)” မုဒ်ကို “file()” ကွန်မန်းသို့ ပေါင်းထည့်ခဲ့ပြီး၊ ၎င်းသည် လည်ပတ်နိုင်သောဖိုင် သို့မဟုတ် ဒစ်ဂျစ်တိုက်ကို ဒိုင်နမစ်ဖြင့် ချိတ်ဆက်သည့်အခါ အသုံးပြုသည့် စာကြည့်တိုက်များစာရင်းကို ထပ်ခါတလဲလဲ ပြန်လည်ရယူခွင့်ပြုသည်။ မုဒ်သည် ယခုအခါ ငြင်းပယ်ခံထားရသည့် GetPrerequisites() အမိန့်ကို အစားထိုးခဲ့သည်။
  • "ctest(1)" command သည် စမ်းသပ်မှုတစ်ခုစီအတွက် လိုအပ်သောအရင်းအမြစ်များပေါ်အခြေခံ၍ စမ်းသပ်မှုများကို အမှတ်အသားပြုနိုင်စွမ်းကို အကောင်အထည်ဖော်သည်။
  • ပြောင်းလဲနိုင်သော "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" ကို ရပ်ဆိုင်းထားပြီး "CMAKE_FIND_USE_PACKAGE_REGISTRY" ဖြင့် အစားထိုးသင့်ပါသည်။
  • ပိုမိုကောင်းမွန်သော AIX ပလပ်ဖောင်းပံ့ပိုးမှု။ "ENABLE_EXPORTS" ပိုင်ဆိုင်မှုကို အသုံးပြုသောအခါ၊ လည်ပတ်နိုင်သောဖိုင်အပြင်၊ ".imp" တိုးချဲ့မှုဖြင့် သိမ်းဆည်းထားသော လင့်ခ်အတွက် တင်သွင်းဖိုင်တစ်ခုကို ယခုထုတ်ပေးပါသည်။ "MODULE" ရွေးချယ်မှုဖြင့် "add_library()" ကိုခေါ်ဆိုခြင်းဖြင့် ဖန်တီးထားသော ပလပ်အင်များတွင်၊ "target_link_libraries()" အမိန့်ကို အသုံးပြု၍ လင့်ခ်ချိတ်သည့်အခါ ဤဖိုင်ကို အသုံးပြုနိုင်ပါသည်။ CMake သည် load time တွင် ချိတ်ဆက်ရန်အတွက် လိုအပ်သော သင်္ကေတအချက်အလက်အားလုံးကို ပေးဆောင်သောကြောင့် AIX တွင် runtime လင့်ခ်ချိတ်ခြင်းကို မူရင်းအားဖြင့် ပိတ်ထားသည်။ ဒိုင်းနမစ်စာကြည့်တိုက်များ သို့မဟုတ် loadable modules များ၏ runtime လင့်ခ်ကိုအသုံးပြုရန်၊ “CMAKE_SHARED_LINKER_FLAGS” နှင့် “CMAKE_MODULE_LINKER_FLAGS” ဗားရှင်းများမှတစ်ဆင့် သတ်မှတ်ထားသော linker startup အလံများစာရင်းများတွင် ရွေးချယ်စရာများ “-Wl, -G” ကို ပြတ်သားစွာ သတ်မှတ်ရပါမည်။

source: opennet.ru

မှတ်ချက် Add