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

Пример 1. Използване CMake

Следният пример показва няколко ключови аспекти на CMake. Преди извършването на този пример, се уверете, че CMake инсталиран на вашия компютър (отидете на инструкциите).

Има три директории. директорията на най-високо ниво има две поддиректории с имена и ./Demo ./Hello. В ./Hello директория ще библиотеката. В директория ./Demo ще изпълним файл, за да бъде свързан с библиотеката. Общо CMakeList.txt създава три файла: един за указателя.

документ LyX

На първо място, директорията на най-високо ниво съдържа следната CMakeLists.txt файла.

# Име на проекта - "Здравей". CMakeLists файлове в този проект може да се отнася

# В главната директория на име източник проект и $

# В главната директория с файлове, събрани на този проект от името на

# Поставянето на изпълним файл с библиотека Здравейте.

target_link_libraries (helloDemo Здравейте)

документ LyX

При извършване на CMake директория от първо ниво го прави разбор CMakeLists.txt, а след това се потапя в изброените директории. Променливи, търсене заглавната файлов път, пътя за търсене библиотека и т.н. наследил. В зависимост от операционната система, са: за Unix направи-файлове или системни файлове за MSVC работни пространства / проекти проекти. Създадените файлове, след това могат да бъдат използвани в конвенционален начин за съставяне на кода.

2 Упражнение CMake

По-долу е една стъпка по стъпка настойнически, обхващаща общи въпроси изгради система, която ви помага да реши CMake. Много от тези теми са представени в Mastering CMake като отделни въпроси, но може да бъде много полезно, за да видите как всички те работят заедно в пример даден проект. Това ръководство може да се намери в Тестове / Tutorial дърво CMake изходния код директория. Всяка стъпка има своя собствена поддиректория, съдържаща пълно копие на урока за тази стъпка.

2.1 Началната точка (Етап 1)

Най-простият дизайн е изградена от изходния код изпълним файл. За прости проекти, две линии CMakeLists файл е всичко, което се изисква. Това ще бъде отправна точка за нашия урок. CMakeLists файл изглежда така:

cmake_minimum_required (версия 2.6)

Имайте предвид, че този пример се използва малки букви за командите в CMakeLists файл. CMake поддържа команди въведени символи в горната част, долната част и смесена делото. Сорс кодът за tutorial.cxx ще изчисли корен квадратен от броя и първата опция, тя е много проста:

// проста програма, която изчислява корен квадратен от редица

Int основна (междинно argc, знак * argv [])

Основните промени са включването на заглавния файл TutorialConfig.h и изход за отпечатване на номера на версията, като част от използването на информация.

2.2 Добавяне на библиотеката (Етап 2)

Сега ще добавим библиотеката в нашия проект. Тази библиотека ще съдържа нашето изпълнение на определяне на стойността на корен квадратен. След това изпълнимия файл е в състояние да използва тази библиотека вместо стандартните функции, предвидени от компилатора. За този урок, ние ще постави на библиотеката в поддиректория с име MathFunctions. Тази директория ще съдържа CMakeLists файл, който съдържа един ред:

файл Mysqrt.cxx източник има една функция на име mysqrt, който предоставя същата функционалност на функциите sqtr компилатор. За да използвате новата библиотека, ние добавяме повикване add_subdirectory CMakeLists на във файла с най-високо ниво, това ще осигури изграждането на библиотеката. Ние също така да добавите друга папка за включване на заглавни MathFunctions / mysqrt.h файл, за да се изгради системата може да намери прототип на нашите функции за изпълнение. Последната промяна е добавянето на нова библиотека в изпълнимия файл. В последните няколко линии на файла с най-високо ниво CMakeLists сега изглеждат така:

# Добавяне на изпълнимия

add_executable (Инструкция tutorial.cxx)

target_link_libraries (Инструкция MathFunctions)

Сега да разгледаме въпроса за създаване на MathFunctions като опция библиотека. В този урок, там не е наистина някаква причина да го направи, но в голяма библиотека или библиотеки, които разчитат на код на трета страна може да го искат. Първата стъпка е да се добави най-високо ниво опция CMakeLists файлове.

# Да използваме нашите собствени математически функции?

опция (USE_MYMATH "Използване урок е предвидено изпълнение математика" ON)

Тази опция ще се появи в CMake GUI и са по подразбиране в положение ON, така че потребителят да може да го променя по желание. Тази настройка ще се съхранява в кеш паметта, така че потребителят не е необходимо да промените настройките всеки път, когато стартирате този проект CMake. Следващата промяна ще позволи да извършват задължителни MathFunctions библиотека опция. За да направите това, ние се промени до края на най-високо ниво CMakeLists на файла, за да гледам на, както следва:

# Добавяне на MathFunctions библиотеката?

комплект (EXTRA_LIBS $ MathFunctions)

# Добавяне на изпълнимия

add_executable (Инструкция tutorial.cxx)

Той използва USE_MYMATH променлива да се определи дали библиотеката на които задължително трябва да MathFunctions съставен и използван. Обърнете внимание на използването на променливата (EXTRA_LIBS в този случай), тя се използва тук, за да се съберат всички допълнителни библиотеки, които по-късно ще бъдат свързани с изпълним файл. Този общ подход се използва за подкрепа на големи проекти с голям брой допълнителни компоненти. Съответните промени в изходния код е съвсем проста:

// проста програма, която изчислява корен квадратен от редица

Int основна (междинно argc, знак * argv [])

fprintf (стандартния изход "% S Версия ... \ п", argv [0], Tutorial_VERSION_MAJOR, Tutorial_VERSION_MINOR);

fprintf (стандартния изход "Използване:% S брой \ п", argv [0]);

двойно Въведена стойност = atof (argv [1]);

двойно outputValue = mysqrt (Въведена стойност);

двойно outputValue = SQRT (Въведена стойност);

fprintf (стандартния изход "корен квадратен от% г е% г \ п", Въведена стойност, outputValue);

В изходния код, ние също използваме USE_MYMATH. Това се постига, когато прехвърлянето на данни от изходния код на CMake чрез конфигурационен файл TutorialConfig.h.in което се прибавя следните низове:

2.3 Инсталация и тест (Етап 3)

За следващата стъпка ще добавим правила за инсталиране и тестване на подкрепа за нашия проект. правила за монтаж са доста прости. За да се установи правилното MathFunctions библиотека библиотека и заглавния файл, следните два реда, за да добавите към CMakeLists файл на MathFunctions ":

инсталират (Цели MathFunctions ДЕСТИНАЦИЯ за боклук)

инсталиране (файлове MathFunctions.h DESTINATION включва)

За заявление за увеличаване на CMakeLists на най-високо ниво на файлове следните редове код, за да настроите изпълнимия файл и конфигурацията на заглавната част на файла:

# Добавяне на инсталацията цели

инсталират (цели Инструкция ДЕСТИНАЦИЯ за боклук)

# Добавяне на главната библиотека

add_library (MathFunctions mysqrt.cxx $ / Table.h)

Първо добавете изпълнимия да MakeTable, тя се добавя като всеки друг изпълним. На второ място, ние да добавите свой собствен команда, която определя как да се произвежда Table.h, започнете MakeTable. На трето място, ние трябва да дадем CMake да се знае, че зависи от mysqrt.cxx Table.h генерира файл. Това се прави чрез добавяне на генерираната Table.h файл в списъка на източници за MathFunctions библиотека. Ние също трябва да добавите текущата двоичен директория към списъка с директории да бъдат включени, така че Table.h файл може да се намери и включени mysqrt.cxx.

Ако се натъкнете на проекта за изграждането на това първо ще се изгради един изпълним файл MakeTable. Тогава той ще започне да се поколение MakeTable Table.h файл. И накрая, тя ще състави mysqrt.cxx файл включва Table.h да генерира MathFunctions библиотека.

В този момент, файла с най-високо ниво CMakeLists ще изглежда така:

cmake_minimum_required (версия 2.6)

комплект (Tutorial_VERSION_MAJOR 1)

комплект (Tutorial_VERSION_MINOR 0)

# Е-дали тази система и двете функции влизат и Годен?

check_function_exists (влезте HAVE_LOG)

check_function_exists (ехр HAVE_EXP)

# Да използваме нашите собствени математически функции

опция (USE_MYMATH "Използване урок е предвидено изпълнение математика" ON)

# Конфигуриране на заглавен файл да преминат някои от настройките на CMake

# До изходния код

# Добавяне на двоично дърво до пътя за търсене, за включване на файлове

# Така че ние ще намерим TutorialConfig.h

# Добавяне на MathFunctions библиотеката?

комплект (EXTRA_LIBS $ MathFunctions)

# Добавяне на изпълнимия

add_executable (Инструкция tutorial.cxx)

# Добавяне на инсталацията цели

инсталират (цели Инструкция ДЕСТИНАЦИЯ за боклук)

# Има ли план за кандидатстване

add_test (TutorialRuns Урок 25)

# Работи ли ползване съобщение?

add_test (TutorialUsage начинаещи)

# определят макро да се опрости добавяне тестове

макро (do_test резултат Arg)

add_test (TutorialComp $ начинаещи $)

# Имате един куп тестове резултат базиран

do_test (4 "е 4, 2")

do_test (9 "е 9, 3")

do_test (5 '5 е 2,236 ")

do_test (7 '7 е 2,645 ")

do_test (25 "25 е 5")

do_test (-25 "-25 е 0")

do_test (0.0001 "0.0001 е 0.01")

TutorialConfig.h.in файл изглежда така:

// конфигурирани опции и настройки за начинаещи

# определят Tutorial_VERSION_MAJOR @ @ Tutorial_VERSION_MAJOR

# определят Tutorial_VERSION_MINOR @ @ Tutorial_VERSION_MINOR

инсталират (Цели MathFunctions ДЕСТИНАЦИЯ за боклук)

инсталиране (файлове MathFunctions.h DESTINATION включва)

2.6 Сглобяване и инсталиране (етап 6)

Нека по-нататък приемем, че ние искаме да разширим проекта за други хора, така че те могат да го използват. Искаме да осигурим за разпространение на изходния код и компилиран код за различни платформи. Това е малко по-различно от това, което направихме по-рано през Инсталиране и тестване (Стъпка 3) 2.3. където се извършва монтаж на бинарни файлове, които са били построени от изходния код. В този пример, ние ще изградим инсталационни пакети, които поддържат двоични функции инсталиране и управление на пакетите, които се съдържат в Cygwin, Debian, RPM, и т.н. За да се постигне това, ние ще използваме CPack, което създава конкретната платформа монтажници, както е описано в CPack на глава опаковане. По-специално, трябва да добавим няколко реда в долната част на нашия файл CMakeLists.txt най-високо ниво.

# Изграждане на CPack задвижва инсталационен пакет

комплект (CPACK_RESOURCE_FILE_LICENSE "$ / License.txt")

Това е всичко, което трябва да го. Ще започнем с InstallRequiredSystemLibraries за включване. Този модул ще включва всички динамични библиотеки, които са необходими в рамките на проекта за текущата платформа. Тогава ние се някои променливи CPack, където пазим информацията за лиценза и версия за проекта. Информация за версията използва променливи, които ние, определени по-рано в този урок. И накрая, ние включваме CPack модул, който ще ги използвам и някои други свойства на системата, на която сте настроили инсталатора.

Следващата стъпка е да се създаде проекта по обичайния начин, а след това стартира CPack върху него. За да създадете двоичен разпределение, е необходимо да се извърши:

cpack -С CPackConfig.cmake

За създаване на разпределение, трябва да въведете

cpack -С CPackSourceConfig.cmake

2.7 Добавяне подкрепа за контролния панел (Етап 7)

Добавянето на подкрепа за представяне на арматурното табло на резултатите нашите тестови се извършва просто. Ние вече набелязани редица тестове за нашия проект в предишните етапи на този урок. Ние просто трябва да изпълните тези тестове и да ги представят на таблото. За да се даде възможност на панели CTest ние включват модул най-високо ниво в нашата CMakeLists файл.

#include скриптове панел

Ние също така се създаде CTestConfig.cmake файл, в който можете да укажете името на таблото за управление на проекта.

комплект (CTEST_PROJECT_NAME "Ръководство")

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

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