| Step 9: Packaging an Installer |
| ============================== |
| |
| Next suppose that we want to distribute our project to other people so that |
| they can use it. We want to provide both binary and source distributions on a |
| variety of platforms. This is a little different from the install we did |
| previously in :guide:`tutorial/Installing and Testing`, where we were |
| installing the binaries that we had built from the source code. In this |
| example we will be building installation packages that support binary |
| installations and package management features. To accomplish this we will use |
| CPack to create platform specific installers. Specifically we need to add a |
| few lines to the bottom of our top-level ``CMakeLists.txt`` file. |
| |
| .. literalinclude:: Step10/CMakeLists.txt |
| :caption: CMakeLists.txt |
| :name: CMakeLists.txt-include-CPack |
| :language: cmake |
| :start-after: # setup installer |
| |
| That is all there is to it. We start by including |
| :module:`InstallRequiredSystemLibraries`. This module will include any runtime |
| libraries that are needed by the project for the current platform. Next we set |
| some CPack variables to where we have stored the license and version |
| information for this project. The version information was set earlier in this |
| tutorial and the ``License.txt`` has been included in the top-level source |
| directory for this step. The :variable:`CPACK_SOURCE_GENERATOR` variable |
| selects a file format for the source package. |
| |
| Finally we include the :module:`CPack module <CPack>` which will use these |
| variables and some other properties of the current system to setup an |
| installer. |
| |
| The next step is to build the project in the usual manner and then run the |
| :manual:`cpack <cpack(1)>` executable. To build a binary distribution, from the |
| binary directory run: |
| |
| .. code-block:: console |
| |
| cpack |
| |
| To specify the generator, use the :option:`-G <cpack -G>` option. For multi-config builds, |
| use :option:`-C <cpack -C>` to specify the configuration. For example: |
| |
| .. code-block:: console |
| |
| cpack -G ZIP -C Debug |
| |
| For a list of available generators, see :manual:`cpack-generators(7)` or call |
| :option:`cpack --help`. An :cpack_gen:`archive generator <CPack Archive Generator>` |
| like ZIP creates a compressed archive of all *installed* files. |
| |
| To create an archive of the *full* source tree you would type: |
| |
| .. code-block:: console |
| |
| cpack --config CPackSourceConfig.cmake |
| |
| Alternatively, run ``make package`` or right click the ``Package`` target and |
| ``Build Project`` from an IDE. |
| |
| Run the installer found in the binary directory. Then run the installed |
| executable and verify that it works. |