A root directory with installed packages can be shared between several local projects. If one local project triggers installation of a new third party package, then the root directory will be locked against modifications until the install has either finished or interrupted (i.e. Ctrl-C). Other local projects that try to run hunter_add_package
for the same root at the same time will automatically wait for the root to be unlocked. Note that different root directories have independent locks, e.g. triggering a build of OpenSSL
for iOS
will not delay building of GTest
for Android
. Internally this is done using the file(LOCK ...)
CMake command (available since 3.2
).
Similar synchronization is done when initializing Hunter using the HunterGate
command. This is a very handy feature for CI systems where an environment is shared between several jobs, e.g. Jenkins.