[CMake] How does :: actually works?
Johannes Zarl-Zierl
johannes.zarl-zierl at jku.at
Thu Jun 11 09:22:16 EDT 2015
Hi,
> I tried several times now to find documentation about how to define
> and use target names which seem to have namespaces, like Qt ones.
>
> For example: add_executable( MyProject::some_target ... )
AFAIK target namespaces are intended for imported targets, not "regular"
targets:
"A NAMESPACE with double-colons is specified when exporting the targets for
installation. This convention of double-colons gives CMake a hint that the
name is an IMPORTED target when it is used by downstreams with the
target_link_libraries() command. This way, CMake can issue a diagnostic if the
package providing it has not yet been found."
[1]
[1] http://www.cmake.org/cmake/help/v3.3/manual/cmake-packages.7.html?highlight=namespace
> I can't find any documentation or even name for this.
> Is it considered a "namespace"?
> In any way I found nothing specific to this syntax in the wiki.
The concept is called "namespace" in cmake, just as you assumed. I don't know
if there's anything about it in the wiki, but the official documentation has a
(very) short description in the cmake_packages[1] page, as well as in the
documentation for the export command.
Cheers,
Johannes
More information about the CMake
mailing list