|
|
(9 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
| ==Introduction==
| | {{CMake/Template/Moved}} |
|
| |
|
| CMake provides two central locations to register packages that have been built or installed anywhere on a system:
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Package-Registry here]. |
| | |
| * [[#User|User Package Registry]]
| |
| * [[#System|System Package Registry]]
| |
| | |
| The registries are especially useful to help project find packages in non-standard install locations or directly in their own build trees.
| |
| A project may use the <code>export(PACKAGE)</code> command to register its build tree in the ''user'' package registry.
| |
| A package installer may populate either the user or system registry (using its own means) to refer to the installed package location.
| |
| In either case the package should store at the registered location a [[CMake/Tutorials/Packaging#Package_Configuration_Files|package configuration file]] (<code><package>Config.cmake</code>) and optionally a [[CMake/Tutorials/Packaging#Package_Version_Files|package version file]] (<code><package>ConfigVersion.cmake</code>).
| |
| | |
| The <code>find_package</code> command searches the package registries as specified in its documentation.
| |
| If it has sufficient permissions it also removes stale package registry entries that refer to directories that do not exist or do not contain a matching package configuration file.
| |
| | |
| ==User==
| |
| | |
| The ''User Package Registry'' is stored in a per-user location.
| |
| | |
| On Windows the user package registry is stored in the Windows registry under a key in <code>HKEY_CURRENT_USER</code>.
| |
| A <code><package></code> may appear under registry key
| |
| | |
| HKEY_CURRENT_USER\Software\Kitware\CMake\Packages\<package>
| |
| | |
| as a <code>REG_SZ</code> value, with arbitrary name, that specifies the directory containing the package configuration file.
| |
| | |
| On UNIX platforms the user package registry is stored in the user home directory under <code>~/.cmake/packages</code>.
| |
| A <code><package></code> may appear under the directory
| |
| | |
| ~/.cmake/packages/<package>
| |
| | |
| as a file, with arbitrary name, whose content specifies the directory containing the package configuration file.
| |
| | |
| ==System==
| |
| | |
| The ''System Package Registry'' is stored in a system-wide location.
| |
| | |
| On Windows the system package registry is stored in the Windows registry under a key in <code>HKEY_LOCAL_MACHINE</code>.
| |
| A <code><package></code> may appear under registry key
| |
| | |
| HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<package>
| |
| | |
| as a <code>REG_SZ</code> value, with arbitrary name, that specifies the directory containing the package configuration file.
| |
| | |
| There is no system package registry on non-Windows platforms.
| |