ПредишенСледващото

CMake - krocsplatformennaya полезност за автоматично съставяне на програмата от изходен код. В същото време тя CMake събрание не участва пряко, а е с преден край. Като резервен end`a може да прави различни версии на грим и нинджа. Просто CMake ви позволява да създавате проекти за CodeBlocks, Eclipse, KDevelop3, MS VC ++ и Xcode. Заслужава да се отбележи, че голяма част от проектите не са местни, но всички с една и съща гърба end`ami.

За да се изгради проекта CMake означава необходимо да се поставят в основата на CMakeLists.txt файла с дърво, което съдържа правилата и да се изгради цели, и да направи няколко прости стъпки.
Ние ще разберем примерите.

Пример 1. Здравей, свят:

Да започнем с това просто ще helovorld:

и файлът за монтаж:

Създаване на празна папка за временни файлове, както и да преминете към.

$ MKDIR ПТУ
fshp @ Паница-настолен:

$ Cd ПТУ /
fshp @ Паница-настолен:

Сега стартирайте командния cmake, да се разпространява като параметър пътя до папката с източник:

/ Cmake / example_1 /
...
- Изграждане на файлове са написани на: / Начало / fshp / TMP
fshp @ Паница-настолен:

/ TMP $ ли
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
fshp @ Паница-настолен:

Виждаме, че има някаква временна папка файлове, необходими за изграждането на проекта.
Сега можете да стартирате директно направите:

/ Tmp $ направи
Сканиране зависимости на целевата основната
[100%] Сграда СХХ възражение CMakeFiles / main.dir / main.cpp.o
Свързването СХХ изпълним основната
[100%] Вграден цел основната
fshp @ Паница-настолен:

/ Tmp $ ./main
Hello, World!
fshp @ Паница-настолен:

Ето защо, нашата програма е събрал.
Tmp папка може да се почисти \ изтриване източник смачка без риск. Ако CMakeLists.txt е била променена, се обадете стартира автоматично cmake. Ако източниците са били преместени, че е необходимо да почистите временната директория и да стартирате cmake ръчно.

Пример 2: Библиотеки:

Променливите могат да съхраняват списъци на ценности, разделени с интервали раздела \ сричкопренасяне \:

И двата варианта са правилни
За да получите стойността на променливата дизайн ipolzuem:

Така че тази версия на нашия проект включва статично библиотека, събрана от източника. Ако замените «STATIC» на «СПОДЕЛЕНО», ние се получи динамичен библиотеката. Ако не е посочен вида на библиотеката, тя ще се съберат като статично подразбиране.
Когато свързване определя всички необходими библиотеки:

Както бе посочено, без «ИЪ» стандартен префикс за имена на потребителя за съставяне на библиотеката.

Пример 3. Подпроекти:

Подпроекти са много удобни, ако вашата програма е разделена на няколко библиотеки или проектът се състои от няколко програми.
Всеки подобект по същество е пълноправен проект и може да се използва самостоятелно.
Сега ние «Foo» е в subdirrektorii и има CMakeLists.txt подобект.

Подпроекта не е нищо ново за вас файл там. Но най-вече нов екип файл:

main.cpp ние не се промени, а foo.h преместен. Командата казва на компилатора къде да намерите най-заглавни файлове. няколко пъти могат да бъдат причинени. Хедър ще се търси във всички посоки до директора.

Посочете папката с под-проект, който ще бъде изграден като независим.

Пример 4: Търсене библиотеки:

CMake е достатъчно развит търсене означава, инсталирани библиотеки, макар че те не са вградени и приложени като отделни модули. В стандарта много единици, но някои от проектите (например Ogre) доставка на вашите собствени.
На Debian-ина са разположени в /usr/share/cmake-2.8/Modules/ (версия може да варира).

Мисля, че смисълът трябва да е ясно. Първият и вторият блок - търсене в библиотеката. Ако това не е системата показва съобщение за грешка и завършва cmake на изпълнение. Третият блок е подобна, само че не се търси пакет от библиотеки, но само необходим компонент. Всеки достъпно автоматизирано търсене се определя след извършване на поне 3 променливи:
SDL_FOUND, LIBXML2_FOUND, Boost_FOUND - подпише bibilioteki присъствие;
SDL_LIBRARY, LIBXML2_LIBRARIES, Boost_LIBRARIES - имена на библиотеки за свързване;
SDL_INCLUDE_DIR, LIBXML2_INCLUDE_DIR, Boost_INCLUDE_DIRS - начин да се включват файлове.
Ако първата по-голяма или по-малко ясно, втората и третата ми донесе много неприятности - половината от тях имат имена в единствено число, половината - в множествено число. Но се оказа, че е лесно да следите. Всеки модул е ​​с първите коментари, той описва определени променливи. Виж, например, /usr/share/cmake-2.8/Modules/FindLibXml2.cmake

Пример 5: Външни статични библиотеки и обектните файлове:

Външно се разбира несистемно доставя в двоичен вид.
Object файлове в CMake са на едно ниво с източника - просто включете obektnik списъка с файлове за компилиране.
С по-строги библиотеки. Както е известно, статична библиотека не е, че друг, като ар-архив, в който лежи обичайната obektniki, които не са свързани един с друг. Вероятно се досещате, както го направих в началото. Да, точно изкормване библиотека. Но тогава бях намерил начин да по-елегантен:

Думата «ВНОСА», посочва, че библиотеката е взета от външната страна.
В CMake всяка цел има има параметри, set_property им позволява да се промени.
Линке такъв стандарт библиотека:

генератори:

Както бе споменато в началото, CMake може да генерира най-различни видове проекти.
Ако изпълните cmake без възможности генератори ще бъдат описани в края. Използвайте това:

/ Cmake / example_3 / -G «KDevelop3 - Unix Makefile-ове»

заключение:

Това, което аз лично като CMake:

  • един проект - един файл. Не е необходимо да се съхранява един куп настройки скриптове, изграждане и други неща;
  • Скоростта в сравнение с autotools;
  • изчистен и опростен синтаксис;
  • предна end`om определен за IDE;
  • показване на напредъка - доста удобно;
  • цвят заключение - в сив малко боя не боли;

Високата Текст за плъгин, който добавя подсветка CMake синтаксис, той се нарича - «CMake».
примери

Свързани статии

Подкрепете проекта - споделете линка, благодаря!