cmake/Tests/CPackComponents/CMakeLists.txt

129 lines
3.9 KiB
CMake
Raw Normal View History

# CPack Example: User-selectable Installation Components
#
# In this example, we have a simple library (mylib) with an example
# application (mylibapp). We create a binary installer that allows
# users to select which pieces will be installed: the example
# application, the library binaries, and/or the header file.
cmake_minimum_required(VERSION 2.6)
project(CPackComponents)
# Create the mylib library
add_library(mylib mylib.cpp)
# Create the mylibapp application
add_executable(mylibapp mylibapp.cpp)
target_link_libraries(mylibapp mylib)
2009-10-04 10:30:41 +03:00
# On Linux, enable using an absolute install path to verify that
# CMAKE_INSTALL_PREFIX and CPACK_SET_DESTDIR interact properly.
2009-11-06 22:07:41 +02:00
#
# But only use absolute paths if not targeting an NSIS installer
# as indicated by CPACK_BINARY_NSIS. (If we allow this, the test
# fails on Linux machines with makensis installed when we are not
# cross-compiling...)
#
2009-10-04 10:30:41 +03:00
if(UNIX AND NOT APPLE)
2009-11-06 22:07:41 +02:00
if(NOT CPACK_BINARY_NSIS)
set(mylib_install_to_absolute_path ON)
endif()
2009-10-04 10:30:41 +03:00
endif()
if(mylib_install_to_absolute_path)
set(CMAKE_INSTALL_PREFIX "/opt/mylib")
set(CPACK_SET_DESTDIR ON)
endif()
# Create installation targets. Note that we put each kind of file
2009-10-04 10:30:41 +03:00
# into a different component via COMPONENT. These components will
# be used to create the installation components.
2013-03-16 19:13:01 +02:00
install(TARGETS mylib
ARCHIVE
DESTINATION lib
COMPONENT libraries)
install(TARGETS mylibapp
RUNTIME
DESTINATION bin
COMPONENT applications)
install(FILES mylib.h
DESTINATION include
COMPONENT headers)
2009-10-04 10:30:41 +03:00
install(FILES "Issue 7470.html"
DESTINATION docs
COMPONENT documentation)
if(mylib_install_to_absolute_path)
install(FILES mylib.cpp
DESTINATION /opt/mylib-source
COMPONENT source)
endif()
# CPack boilerplate for this project
set(CPACK_PACKAGE_NAME "MyLib")
set(CPACK_PACKAGE_VENDOR "CMake.org")
2009-10-04 10:30:41 +03:00
set(CPACK_PACKAGE_CONTACT "somebody@cmake.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example")
2011-01-16 11:35:12 +01:00
# Settings used when building NSIS installers
set(CPACK_NSIS_MENU_LINKS
"ftp://ftpserver" "Test Ftp Link"
"ftps://ftpsserver" "Test Ftps Link"
"http://www.cmake.org" "CMake Web Site"
"https://github.com/" "Test Https Link"
"mailto:kitware@kitware.com" "Test MailTo Link"
"news://newsserver" "Test News Link"
)
# Suggested default root for end users of the installer:
set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files\\CMake Tests Install Root")
# Include CPack to introduce the appropriate targets
include(CPack)
# Installation types
cpack_add_install_type(Full
DISPLAY_NAME "Everything")
cpack_add_install_type(Developer)
# Component groups
cpack_add_component_group(Runtime)
cpack_add_component_group(Development
EXPANDED
DESCRIPTION "All of the tools you'll ever need to develop software")
# Components
cpack_add_component(applications
DISPLAY_NAME "MyLib Application"
DESCRIPTION "An extremely useful application that makes use of MyLib"
GROUP Runtime
INSTALL_TYPES Full)
2009-10-04 10:30:41 +03:00
cpack_add_component(documentation
DISPLAY_NAME "MyLib Documentation"
DESCRIPTION "The extensive suite of MyLib Application documentation files"
GROUP Runtime
INSTALL_TYPES Full)
cpack_add_component(libraries
DISPLAY_NAME "Libraries"
DESCRIPTION "Static libraries used to build programs with MyLib"
GROUP Development
INSTALL_TYPES Developer Full)
cpack_add_component(headers
DISPLAY_NAME "C++ Headers"
DESCRIPTION "C/C++ header files for use with MyLib"
GROUP Development
DEPENDS libraries
INSTALL_TYPES Developer Full)
2009-10-04 10:30:41 +03:00
if(mylib_install_to_absolute_path)
cpack_add_component(source
DISPLAY_NAME "C++ Source Files"
DESCRIPTION "C/C++ source files to build MyLib"
GROUP Development
DEPENDS libraries
INSTALL_TYPES Developer Full)
endif()