CMake సరళమైన స్క్రిప్టింగ్ భాష, మాడ్యూల్స్ ద్వారా కార్యాచరణను విస్తరించే సాధనం, కనీస సంఖ్యలో డిపెండెన్సీలు (M4, Perl లేదా పైథాన్కు బంధించడం లేదు), కాషింగ్ సపోర్ట్, క్రాస్-కంపైలేషన్ కోసం టూల్స్ ఉనికి, బిల్డ్ను రూపొందించడంలో మద్దతు అందించడంలో ప్రముఖమైనది. విస్తృత శ్రేణి బిల్డ్ సిస్టమ్లు మరియు కంపైలర్ల కోసం ఫైల్లు, టెస్ట్ స్క్రిప్ట్లు మరియు బిల్డింగ్ ప్యాకేజీలను నిర్వచించడానికి ఉనికి ctest మరియు cpack యుటిలిటీలు, ఇంటరాక్టివ్గా బిల్డ్ పారామితులను సెట్ చేయడానికి cmake-gui యుటిలిటీ.
ప్రధాన
- ఆబ్జెక్టివ్ సి (“OBJC”) మరియు ఆబ్జెక్టివ్ భాషలకు మద్దతు జోడించబడింది
C++ ("OBJCXX"), ఇది ప్రాజెక్ట్() మరియు enable_language() ఆదేశాల ద్వారా ప్రారంభించబడుతుంది, ఆ తర్వాత ".m" ".mm" ఫైల్లలోని కోడ్ ఆబ్జెక్టివ్ C మరియు ఆబ్జెక్టివ్ C++ కోడ్ వలె కాకుండా కంపైల్ చేస్తుంది. C++, ఇది మునుపటిలాగా; - సోలారిస్ ప్లాట్ఫారమ్పై క్లాంగ్ కంపైలర్కు మద్దతు జోడించబడింది;
- కొత్త కమాండ్ లైన్ ఎంపికలు జోడించబడ్డాయి: రిటర్న్ కోడ్లు 0 మరియు 1ని ప్రింట్ చేయడానికి “cmake -E true|false”; "cmake --trace-redirect=" బదులుగా ట్రేస్ సమాచారాన్ని ఫైల్కి మళ్లించడానికి
"stderr"; "cmake --loglevel" ఆదేశం ఇతర కమాండ్ల పేర్లతో లైన్లోకి తీసుకురావడానికి "--log-level"గా పేరు మార్చబడింది; - ప్రీకంపైలేషన్ సమయంలో ఉపయోగించిన హెడర్ ఫైల్ల జాబితాను జాబితా చేయడానికి “target_precompile_headers()” ఆదేశం జోడించబడింది (నిర్మాణ సమయాన్ని తగ్గిస్తుంది);
- “UNITY_BUILD” ప్రాపర్టీ జోడించబడింది, ఇది బిల్డ్ను వేగవంతం చేయడానికి జనరేటర్లలో సోర్స్ ఫైల్లను ప్రాసెస్ చేయడానికి బ్యాచ్ మోడ్ను సక్రియం చేస్తుంది;
- జోడించిన ఆదేశాలు “find_file()”, “find_library()”, “find_path()”,
"find_package()" మరియు "find_program()" ఫైల్లు, లైబ్రరీలు, పాత్లు, ప్యాకేజీలు మరియు ఎక్జిక్యూటబుల్ల కోసం వివిధ వర్గాల ఫైళ్ల కోసం శోధన మార్గాలను నిర్వచించే వేరియబుల్స్ ప్రకారం శోధించవచ్చు.
వేరియబుల్స్ "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FINDEMKTH_USE_PY_ST" _ENVIRONMENT_PATH" మరియు "CMAKE_FIND_USE_PACKAGE_REGIST" ఆధార శోధన మార్గాలను నియంత్రించడానికి ఉపయోగించబడతాయి RY"; - “ఫైల్(GET_RUNTIME_DEPENDENCIES)” మోడ్ “ఫైల్()” కమాండ్కు జోడించబడింది, ఇది ఎక్జిక్యూటబుల్ ఫైల్ లేదా లైబ్రరీని డైనమిక్గా లింక్ చేసేటప్పుడు ఉపయోగించే లైబ్రరీల జాబితాను పునరావృతంగా తిరిగి పొందేందుకు మిమ్మల్ని అనుమతిస్తుంది. మోడ్ GetPrerequisites() ఆదేశాన్ని భర్తీ చేసింది, ఇది ఇప్పుడు నిలిపివేయబడింది;
- “ctest(1)” ఆదేశం ప్రతి పరీక్షకు అవసరమైన వనరుల ఆధారంగా పరీక్షలను క్రమీకరించే సామర్థ్యాన్ని అమలు చేస్తుంది;
- వేరియబుల్ "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" నిలిపివేయబడింది మరియు "CMAKE_FIND_USE_PACKAGE_REGISTRY"తో భర్తీ చేయాలి;
- మెరుగైన AIX ప్లాట్ఫారమ్ మద్దతు. "ENABLE_EXPORTS" ప్రాపర్టీని ఉపయోగిస్తున్నప్పుడు, ఎక్జిక్యూటబుల్ ఫైల్తో పాటు, లింకర్ కోసం దిగుమతి ఫైల్ ఇప్పుడు ఉత్పత్తి చేయబడుతుంది, ".imp" పొడిగింపుతో సేవ్ చేయబడుతుంది. "MODULE" ఎంపికతో "add_library()"కి కాల్ చేయడం ద్వారా సృష్టించబడిన ప్లగిన్లలో, "target_link_libraries()" ఆదేశాన్ని ఉపయోగించి లింక్ చేస్తున్నప్పుడు ఈ ఫైల్ ఉపయోగించబడుతుంది. CMake ఇప్పుడు లోడ్ సమయంలో లింక్ చేయడానికి అవసరమైన అన్ని చిహ్న సమాచారాన్ని అందిస్తుంది కాబట్టి AIXలో రన్టైమ్ లింక్ చేయడం డిఫాల్ట్గా నిలిపివేయబడింది. డైనమిక్ లైబ్రరీలు లేదా లోడ్ చేయగల మాడ్యూల్ల రన్టైమ్ లింక్ను ఉపయోగించడానికి, మీరు తప్పనిసరిగా “CMAKE_SHARED_LINKER_FLAGS” మరియు “CMAKE_MODULE_LINKERFLAGS” ద్వారా నిర్వచించబడిన లింకర్ స్టార్టప్ ఫ్లాగ్ల జాబితాలలో “-Wl, -G” ఎంపికలను స్పష్టంగా పేర్కొనాలి.
మూలం: opennet.ru