Кіріспе
Крос-платформалық, компилятордан тәуелсіз құрастыру жүйесі генераторы Бағдарламалық жасақтауда CMake - компилятордан тәуелсіз әдісті қолдану арқылы бағдарламалық жасақтаманы автоматтандыру, сынау, таңу және орнату үшін платформалық тегін және ашық бастапқы коды бар бағдарламалық жасақтама. CMake - бұл құрастыру жүйесі емес, ол басқа жүйенің құрастыру файлдарын жасайды. Ол бірнеше кітапханаларға тәуелді каталог иерархиясы мен қолданбаларды қолдайды. Ол Make, Qt Creator, Ninja, Android Studio, Apple Xcode және Microsoft Visual Studio сияқты жергілікті құрастыру орталарын шақыра алады.
In software development, CMake is cross platform free and open source software for build automation, testing, packaging and installation of software by using a compiler independent method. CMake is not a build system itself; it generates another system's build files. It supports directory hierarchies and applications that depend on multiple libraries. It can invoke native build environments such as Make, Qt Creator, Ninja, Android Studio, Apple's Xcode, and Microsoft Visual Studio.
Тарих
CMake-ті әзірлеу 1999 жылы Insight Segmentation and Registration Toolkit (ITK) үшін платформааралық құрастыру ортасына деген қажеттілікке жауап ретінде басталды. Брэд Кинг және GE корпоративтік ҒЗИ-і DART-ты қолдау үшін қосылған мүмкіндіктер. VTK CMake-ке ауысқанда қосымша мүмкіндіктер құрылды. 3.0 нұсқасы 2014 жылдың маусым айында шығарылды. Бұл "Қазіргі заманғы CMake" бастамасы деп сипатталған. Қазіргі таңда мамандар мақсаттар мен қасиеттерге байланысты өзгермелі факторлардан аулақ болуға кеңес береді. CMake 2-дің негізгі командалары , , , енді мақсатқа арналған командалармен ауыстырылуы тиіс . Жасаушы Брэд Кинг CMake-дегі "C" "Cross platform" дегенді білдіреді.
Жеке құрастыру ағашы
Оның негізгі ерекшеліктерінің бірі - компилятордың шығыстарын (мысалы, объект файлдарын) бастапқы ағаштың сыртында орналасқан құрастыру ағашына орналастыру мүмкіндігі.
IDE конфигурациясын қолдау
CMake бірнеше танымал IDE-лер үшін жоба файлдарын шығарады, мысалы Microsoft Visual Studio, Xcode және Eclipse CDT. Ол сондай-ақ Windows-та MSBuild немесе NMake үшін құрастыру скрипттерін шығара алады; Unix Linux, macOS және Cygwin сияқты Unix сияқты платформаларда Unix Make; және Windows және Unix сияқты платформаларда Ninja.
Компилятордың ерекшеліктерін анықтау
CMake мақсатты бағдарламаны немесе кітапхананы құрастыру үшін компилятордың қолдауын қажет ететін мүмкіндіктерді анықтауға мүмкіндік береді.
Компиляторлар
CMake компиляторлардың кең тізімін қолдайды, соның ішінде: Apple Clang, Clang, GNU GCC, MSVC, Oracle Developer Studio және Intel C++ компиляторы.
Қаптама жүйесі
CMake пакет менеджері болмаса да, ол негізгі модульдерді (CPack қараңыз) екілік файлдарды орнату үшін және тұтынушы CMake жобаларында қолданылатын скриптпен мәлімделген пакет ақпаратын ұсынады. Пакет сондай-ақ мақсатты платформа қолданатын пакет менеджері немесе орнатушы үшін архив файлына жиналуы мүмкін. Үшінші тараптың пакеттері сондай-ақ сол үшінші тарап ұсынған немесе қолмен жасалған конфигурацияланған CMake файлдары арқылы импортталуы мүмкін.
GUI-де
Cmake-ті ncurses бағдарламасын пайдалану арқылы орындауға болады, оны командалық жол интерфейсі арқылы жобаларды конфигурациялау үшін пайдалануға болады.
Құру процесі
CMake бағдарламасын немесе кітапханасын құру екі кезеңді процесс. Пайдаланушы команда жолында келтірген генератор қандай құрастыру құралы тізбегін қолдану керектігін анықтайды. Ескі тәсіл қазір қолданылмайды.
Құрастыру мақсаттарының түрлері
CMakeLists-ке байланысты. ), объект файлдар кітапханалары немесе псевдомақсаттар (алмаштарды қоса алғанда). CMake орындалатын бинарлық файлдар / кітапханалар арқылы байланыстыра алатын объект файлдарын шығарады, динамикалық (жүргізу уақыты) байланыстырудан аулақ болып, оның орнына статикалық (компиляция уақыты) байланыстыруды қолданады. Бұл әр түрлі оңтайландыруларды конфигурациялаудың икемділігін қамтамасыз етеді. Құрастыру тәуелділіктері автоматты түрде анықталуы мүмкін.
Алдын ала жинақталған бағандар
CMake-ті 3.6-дан бастап пайдалану арқылы алдын ала құрастырылған бастыларды құруға болады.
CMakeLists.txt файлы
CMake салыстырмалы түрде қарапайым түсіндірілетін, императивті скрипт тілі бар. Ол айнымалыларды, тізбекті өңдеу әдістерін, массивтерді, функция / макрос декларацияларын және модульді енгізуді (импорттау) қолдайды. CMake Language командалары (немесе директивалары) аталатын файлдан оқылады Бұл файл бастапқы файлдарды және құрастыру параметрлерін анықтайды, оларды CMake жобаның құрастыру ерекшелігіне (мысалы, Makefile) орналастырады. Сонымен қатар, жұрнақ файлдарда CMake қолданатын скрипттер болуы мүмкін. Жобаның құрастыру файлдарын жасау үшін терминалға шақырып, құрамында бар каталогты анықтайды. Бұл файлда бір немесе бірнеше командалар бар .
JSON тізбелері
CMake JSON деректер тізбектерінен (версия 3.19-дан бастап) айнымалыларға мәндерді алуды қолдайды.
Ішкі істер
CMake скрипт тілі Yacc және Lex генераторларын пайдалану арқылы іске асырылады. CMake, CPack және CTest орындалатын бағдарламалары C++ бағдарламалау тілінде жазылған. CMake-тің көптеген функциялары CMake тілінде жазылған модульдерде іске асырылады. 3.0 нұсқасынан бастап CMake құжаттамасы reStructuredText таңбалауын пайдаланады. HTML беттер мен man беттерін Sphinx құжаттама генераторы жасайды.
Бала асырап алу
CMake коммерциялық, ашық бастапқы коды бар және академиялық бағдарламалық жобалар арасында кеңінен қолданылған. Бірнеше белгілі пайдаланушылар: Android NDK, Netflix, Inria, MySQL, Boost (C ++ кітапханалары), KeePassXC, KDE, KiCAD, FreeCAD, Webkit, Blender, Biicode, ReactOS, Apache Qpid, ATLAS эксперименті және Second Life.
Android NDK, Netflix, Inria, MySQL, Boost (C++ libraries), KeePassXC, KDE, KiCAD, FreeCAD, Webkit, Blender, Biicode, ReactOS, Apache Qpid, the ATLAS experiment, and Second Life.
Сәлем әлем
Келесі бастапқы код файлдары CMake көмегімен C++ тілінде жазылған қарапайым hello world бағдарламасын қалай құрастыруға болатынын көрсетеді.