MyTetra Share
Делитесь знаниями!
Сmake, как писать опцию install
Время создания: 02.05.2013 20:42
Раздел: Компьютер - Программирование - Системы сборки - CMake
Запись: xintrea/mytetra_syncro/master/base/1367512960uoiy1go83q/text.html на raw.github.com

Файл CMakeLists.txt:


cmake_minimum_required(VERSION 2.6)

project(demolib C)

add_library(demolib SHARED demolib.c demolib.h)


if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)

set(LIB_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/lib/)

elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux)

set(LIB_INSTALL_PATH /usr/lib/)

endif()


install(TARGETS demolib DESTINATION ${LIB_INSTALL_PATH})

find_path(LIB_INCLUDE_PATH string.h)

install(FILES demolib.h DESTINATION ${LIB_INCLUDE_PATH})


Самой полезной из этих команд является команда install().


У команды install() три группы аргументов:


  • спецификатор, определяющий, что именно мы устанавливаем,
  • список имен устанавливаемых объектов
  • целевая директория.


Команда install(), вызванная со спецификатором TARGETS, устанавливает файлы, являющиеся целями (то есть, результатом) сборки. В качестве аргументов мы передаем команде имя цели сборки и директорию, в которую должны быть установлены целевые файлы. Для того чтобы сгенерировать инструкции установки файла, не являющегося целью сборки (например, файла demolib.h), мы вызываем команду install() со спецификатором FILES. У команды install() есть и другие опции, можно, например, указать, какую из конфигураций сборки (RELEASE, DEBUG и т.д.) следует использовать для установки (если вы думаете, что никому не понадобится устанавливать проект, собранный в отладочной конфигурации, то ошибаетесь, - многие библиотеки, модули расширения, да и программы можно отлаживать только после полной установки).


В команде install() можно также указывать разрешения для устанавливаемого файла.


Спецификатор SCRIPTS команды install() позволяет выполнять сценарии CMake до и после установки файлов. Это может оказаться полезным в тех случаях, когда для корректной установки необходимо не только скопировать файл, но и выполнить некоторые дополнительные действия – запустить утилиты, настроить файлы конфигурации, добавить записи в реестр (ой, о чем это я?)...


 
MyTetra Share v.0.65
Яндекс индекс цитирования