123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- # 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)
- # On Linux, enable using an absolute install path to verify that
- # CMAKE_INSTALL_PREFIX and CPACK_SET_DESTDIR interact properly.
- #
- # 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...)
- #
- if(UNIX AND NOT APPLE)
- if(NOT CPACK_BINARY_NSIS)
- set(mylib_install_to_absolute_path ON)
- endif()
- 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
- # into a different component via COMPONENT. These components will
- # be used to create the installation components.
- install(TARGETS mylib
- ARCHIVE
- DESTINATION lib
- COMPONENT libraries)
- install(TARGETS mylibapp
- RUNTIME
- DESTINATION bin
- COMPONENT applications)
- install(FILES mylib.h
- DESTINATION include
- COMPONENT headers)
- 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")
- 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")
- # Settings used when building NSIS installers
- set(CPACK_NSIS_MENU_LINKS
- "ftp://ftpserver" "Test Ftp Link"
- "ftps://ftpsserver" "Test Ftps Link"
- "https://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)
- 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)
- 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()
|