సమర్పించిన వారు క్రాస్-ప్లాట్ఫారమ్ ఓపెన్ బిల్డ్ స్క్రిప్ట్ జనరేటర్ విడుదల CMake 3.17, ఇది ఆటోటూల్స్కు ప్రత్యామ్నాయంగా పనిచేస్తుంది మరియు KDE, LLVM/Clang, MySQL, MariaDB, ReactOS మరియు బ్లెండర్ వంటి ప్రాజెక్ట్లలో ఉపయోగించబడుతుంది. CMake కోడ్ C++లో వ్రాయబడింది మరియు BSD లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.
CMake సరళమైన స్క్రిప్టింగ్ భాష, మాడ్యూల్స్ ద్వారా కార్యాచరణను విస్తరించే సాధనం, కనీస సంఖ్యలో డిపెండెన్సీలు (M4, Perl లేదా పైథాన్కు బంధించడం లేదు), కాషింగ్ సపోర్ట్, క్రాస్-కంపైలేషన్ కోసం టూల్స్ ఉనికి, బిల్డ్ను రూపొందించడంలో మద్దతు అందించడంలో ప్రముఖమైనది. విస్తృత శ్రేణి బిల్డ్ సిస్టమ్లు మరియు కంపైలర్ల కోసం ఫైల్లు, టెస్ట్ స్క్రిప్ట్లు మరియు బిల్డింగ్ ప్యాకేజీలను నిర్వచించడానికి ఉనికి ctest మరియు cpack యుటిలిటీలు, ఇంటరాక్టివ్గా బిల్డ్ పారామితులను సెట్ చేయడానికి cmake-gui యుటిలిటీ.
నింజా టూల్కిట్ ఆధారంగా కొత్త అసెంబ్లీ స్క్రిప్ట్ జనరేటర్ జోడించబడింది - “నింజా మల్టీ-కాన్ఫిగ్”, ఇది ఒకేసారి అనేక అసెంబ్లీ కాన్ఫిగరేషన్లను ప్రాసెస్ చేయగల సామర్థ్యంలో పాత జనరేటర్కు భిన్నంగా ఉంటుంది.
విజువల్ స్టూడియో కోసం అసెంబ్లీ స్క్రిప్ట్ జనరేటర్లో కనిపించాడు ప్రతి కాన్ఫిగరేషన్తో అనుబంధించబడిన సోర్స్ ఫైల్లను నిర్వచించే సామర్థ్యం (ప్రతి కాన్ఫిగరేషన్ మూలాలు).
CUDA కోసం మెటా పారామితులను సెట్ చేసే సామర్థ్యం (“cuda_std_03”, “cuda_std_14”, మొదలైనవి) కంపైలర్ పారామితులను సెట్ చేయడానికి సాధనాలకు జోడించబడింది (కంపైల్ ఫీచర్లు).
CUDA భాషను ప్రారంభించకుండానే సిస్టమ్లో అందుబాటులో ఉన్న CUDA టూల్కిట్ని గుర్తించడానికి "FindCUDAToolkit" మాడ్యూల్ జోడించబడింది.
శోధన కార్యకలాపాలను నిర్వహిస్తున్నప్పుడు అదనపు రీడబుల్ డయాగ్నస్టిక్లను అవుట్పుట్ చేయడానికి cmakeకి "--డీబగ్-ఫైండ్" ఆదేశం జోడించబడింది. సారూప్య ప్రయోజనాల కోసం, CMAKE_FIND_DEBUG_MODE వేరియబుల్ జోడించబడింది.
“FindCURL” మాడ్యూల్కి “CURLConfig.cmake” అనే cmake-జనరేటెడ్ కాన్ఫిగరేషన్ ఫైల్లను ఉపయోగించి CURL సాధనాల కోసం శోధించడానికి మద్దతు జోడించబడింది. ఈ ప్రవర్తనను నిలిపివేయడానికి, CURL_NO_CURL_CMAKE వేరియబుల్ అందించబడింది.
FindPython మాడ్యూల్ “conda” ఉపయోగించి నిర్వహించబడే వర్చువల్ పరిసరాలలో పైథాన్ భాగాల కోసం శోధించే సామర్థ్యాన్ని జోడించింది.
పరీక్షలు లేని సందర్భంలో ప్రవర్తనను నిర్వచించడానికి ctest యుటిలిటీ “--no-tests=[error|ignore]” ఎంపికలను జోడించింది మరియు పరీక్షలను మళ్లీ అమలు చేయడానికి షరతులను సెట్ చేయడానికి “--repeat” (పాస్ అయ్యే వరకు, గడువు ముగిసిన తర్వాత).
అసెంబ్లీ లక్ష్య లక్షణాలు INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES మరియు INTERFACE_LINK_DEPENDS ఇప్పుడు స్థిరంగా సమీకరించబడిన లైబ్రరీల అంతర్గత డిపెండెన్సీల మధ్య బదిలీ చేయబడ్డాయి.
MinGW టూల్కిట్ని ఉపయోగిస్తున్నప్పుడు, find_library కమాండ్తో DLL ఫైల్ల కోసం శోధన డిఫాల్ట్గా నిలిపివేయబడుతుంది (బదులుగా, డిఫాల్ట్ ప్రయత్నం ".dll.a" లైబ్రరీలను దిగుమతి చేయడం).
నింజా జనరేటర్లో నింజా యుటిలిటీని ఎంచుకునే లాజిక్ ఇప్పుడు ఎక్జిక్యూటబుల్ ఫైల్ పేరుపై ఆధారపడి ఉండదు - PATH ఎన్విరాన్మెంట్ వేరియబుల్ ద్వారా నిర్వచించబడిన పాత్లలో కనిపించే మొదటి నింజా-బిల్డ్, నింజా లేదా సాము యుటిలిటీ ఉపయోగించబడుతుంది.
"-E rm" ఆదేశం cmakeకి జోడించబడింది, ఇది ఫైల్లు మరియు డైరెక్టరీలను తీసివేయడానికి ప్రత్యేక "-E remove" మరియు "-E remove_directory" ఆదేశాలకు బదులుగా ఉపయోగించబడుతుంది.