[CMake] How does :: actually works?

Alexander Neundorf a.neundorf-work at gmx.net
Sat Jun 13 16:29:51 EDT 2015


On Thursday, June 11, 2015 19:18:55 Klaim - Joël Lamotte wrote:
> On 11 June 2015 at 15:22, Johannes Zarl-Zierl <johannes.zarl-zierl at jku.at>
> 
> wrote:
> > 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?highligh
> > t=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.
> 
> (sorry I was actually thinking about the documentation and typed "wiki")
> 
> Thanks, it was not totally clear that the definition of the namespace is
> done
> in another operation, so I assumed that it was just a local option, not ana
> actual language feature,
> and simply dismissed it.
> Maybe the concept should have it's own section?
> There is no mention of this in the language page. Or is it really useful
> only if you are writing exports?
> 
> Anyway thanks, it's clearer now.


What do you actually want to do with the "namespace" ?
cmake does not really have namespaces, what the documentation talks about is 
only used as a hint when using imported targets.

Alex



More information about the CMake mailing list