|
|
(9 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
| <!-- CPack documentation and manual -->
| | {{CMake/Template/Moved}} |
| =Introduction=
| |
|
| |
|
| ''CPack'' is a powerful, easy to use, cross-platform software packaging tool distributed with [http://www.cmake.org CMake] since version 2.4.2. It uses the generators concept from CMake, to abstract package generation on specific platforms, and it can be used with or without CMake.
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/cpack/Packaging-With-CPack here]. |
| | |
| Using either a simple configuration file or the CMake module, a complex project can be packaged into an installer.
| |
| | |
| | |
| =Using CPack without CMake=
| |
| | |
| CPack can be used directly by specifying a CPackConfig.cmake file, which uses CMake syntax and defines several variables. Here is an example CPackConfig.cmake file for a Linux system:
| |
| | |
| <pre><nowiki>SET(CPACK_CMAKE_GENERATOR "Unix Makefiles")
| |
| SET(CPACK_GENERATOR "STGZ;TGZ;TZ")
| |
| SET(CPACK_INSTALL_CMAKE_PROJECTS "/home/andy/vtk/CMake-bin;CMake;ALL;/")
| |
| SET(CPACK_NSIS_DISPLAY_NAME "CMake 2.5")
| |
| SET(CPACK_OUTPUT_CONFIG_FILE "/home/andy/vtk/CMake-bin/CPackConfig.cmake")
| |
| SET(CPACK_PACKAGE_DESCRIPTION_FILE "/home/andy/vtk/CMake/Copyright.txt")
| |
| SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CMake is a build tool")
| |
| SET(CPACK_PACKAGE_EXECUTABLES "ccmake;CMake")
| |
| SET(CPACK_PACKAGE_FILE_NAME "cmake-2.5.0-Linux-i686")
| |
| SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake 2.5")
| |
| SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "CMake 2.5.0")
| |
| SET(CPACK_PACKAGE_NAME "CMake")
| |
| SET(CPACK_PACKAGE_VENDOR "Kitware")
| |
| SET(CPACK_PACKAGE_VERSION "2.5.0")
| |
| SET(CPACK_PACKAGE_VERSION_MAJOR "2")
| |
| SET(CPACK_PACKAGE_VERSION_MINOR "5")
| |
| SET(CPACK_PACKAGE_VERSION_PATCH "0")
| |
| SET(CPACK_RESOURCE_FILE_LICENSE "/home/andy/vtk/CMake/Copyright.txt")
| |
| SET(CPACK_RESOURCE_FILE_README "/home/andy/vtk/CMake/Templates/CPack.GenericDescription.txt")
| |
| SET(CPACK_RESOURCE_FILE_WELCOME "/home/andy/vtk/CMake/Templates/CPack.GenericWelcome.txt")
| |
| SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
| |
| SET(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/andy/vtk/CMake-bin/CPackSourceConfig.cmake")
| |
| SET(CPACK_SOURCE_PACKAGE_FILE_NAME "cmake-2.5.0")
| |
| SET(CPACK_SOURCE_STRIP_FILES "")
| |
| SET(CPACK_STRIP_FILES "bin/ccmake;bin/cmake;bin/cpack;bin/ctest")
| |
| SET(CPACK_SYSTEM_NAME "Linux-i686")
| |
| SET(CPACK_TOPLEVEL_TAG "Linux-i686")</nowiki></pre>
| |
| | |
| These variables can also be overwritten on the command line using the option "-D":
| |
| | |
| cpack -D CPACK_PACKAGE_VENDOR=Me -D CPACK_SYSTEM_NAME=super-duper-linux ...
| |
| | |
| | |
| =Using CPack with CMake=
| |
| | |
| CMake comes with a CPack module, which will automatically generate an appropriate CPack configuration file. To use the module, simply invoke the following command:
| |
| | |
| <pre><nowiki>INCLUDE(CPack)</nowiki></pre>
| |
| | |
| This generates a new target called ''"package"'' in your build system. When this target is built, CPack will be invoked to generate all of the packages. Internally, CPack will use [[CMake:Install_Commands | CMake's install mechanism]] to automatically populate the package.
| |
| | |
| An example output of the ''"package"'' target (from a Linux Makefile) is:
| |
| | |
| <pre><nowiki>Run CPack packaging tool...
| |
| CPack: Create package using STGZ
| |
| CPack: Install projects
| |
| CPack: - Run preinstall target for: CMake
| |
| CPack: - Install project: CMake
| |
| CPack: - Strip files
| |
| CPack: Compress package
| |
| CPack: Finalize package
| |
| CPack: Package /home/andy/CMake-bin/cmake-2.5.0-Linux-i686.sh generated.
| |
| CPack: Create package using TGZ
| |
| CPack: Install projects
| |
| CPack: - Run preinstall target for: CMake
| |
| CPack: - Install project: CMake
| |
| CPack: - Strip files
| |
| CPack: Compress package
| |
| CPack: Finalize package
| |
| CPack: Package /home/andy/CMake-bin/cmake-2.5.0-Linux-i686.tar.gz generated.
| |
| CPack: Create package using TZ
| |
| CPack: Install projects
| |
| CPack: - Run preinstall target for: CMake
| |
| CPack: - Install project: CMake
| |
| CPack: - Strip files
| |
| CPack: Compress package
| |
| CPack: Finalize package
| |
| CPack: Package /home/andy/CMake-bin/cmake-2.5.0-Linux-i686.tar.Z generated.</nowiki></pre>
| |
| | |
| | |
| ==Using CMake variables to configure CPack==
| |
| | |
| To configure CPack, it is possible to define [[CMake:CPackConfiguration| CPack variables]] inside a CMake file. These variables will be copied across to the generated CPackConfig.cmake file before CPack is invoked.
| |
| | |
| This is an example CMake list section for CPack configuration:
| |
| | |
| <pre><nowiki>
| |
| INCLUDE(InstallRequiredSystemLibraries)
| |
| | |
| SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "My funky project")
| |
| SET(CPACK_PACKAGE_VENDOR "Me, myself, and I")
| |
| SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
| |
| SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
| |
| SET(CPACK_PACKAGE_VERSION_MAJOR "1")
| |
| SET(CPACK_PACKAGE_VERSION_MINOR "3")
| |
| SET(CPACK_PACKAGE_VERSION_PATCH "2")
| |
| SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
| |
| IF(WIN32 AND NOT UNIX)
| |
| # There is a bug in NSI that does not handle full unix paths properly. Make
| |
| # sure there is at least one set of four (4) backlasshes.
| |
| SET(CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
| |
| SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
| |
| SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} My Famous Project")
| |
| SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.my-project-home-page.org")
| |
| SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.my-personal-home-page.com")
| |
| SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com")
| |
| SET(CPACK_NSIS_MODIFY_PATH ON)
| |
| ELSE(WIN32 AND NOT UNIX)
| |
| SET(CPACK_STRIP_FILES "bin/MyExecutable")
| |
| SET(CPACK_SOURCE_STRIP_FILES "")
| |
| ENDIF(WIN32 AND NOT UNIX)
| |
| SET(CPACK_PACKAGE_EXECUTABLES "MyExecutable" "My Executable")
| |
| INCLUDE(CPack)</nowiki></pre>
| |
| | |
| {{CMake/Template/Footer}}
| |