[cmake-developers] (naming-)convention for ALIAS and INTERFACE targets

Alexander Neundorf neundorf at kde.org
Sat Sep 14 04:54:10 EDT 2013


On Friday 13 September 2013, Daniel Pfeifer wrote:
> Hi Steve and all,
> 
> we restarted the CMake-ification of molularized Boost with modern
> CMake features here: https://github.com/boost-cmake/boost-cmake
> 
> We want to be able to build all Boost libraries together, but also
> each library on its own.
> Am I correct that in both cases we use the :: name in tll()?
> 
> The :: target name is an ALIAS in the first use case and an imported
> INTERFACE in the second, right?
> 
> I assume that, for the INTERFACE case, the interfaces need to be
> imported with find_package(). How can we make sure that calling
> find_package() does not get in the way when Boost is built as a whole?

I think you have to put an if(built_standalone ?) around it.
or check whether some target is already existing, something like
if(NOT TARGET SomeBoostTarget).


> Boost also provides some tools for building documentation. To simplify
> using these tools with CMake, we want to make them provide also some
> CMake modules. Note that we don't want to put these modules in a
> common location, but let each Boost tool bring its own module.
> 
> Since those modules will be used by Boost itself, they should be
> usable from both the install dir and the source dir.
> 
> What would be better?
> 1) Let Boostbook provide a module UseBoostbook.cmake
> 2) Put all Boostbook related functions into FindBoostbook.cmake

If Boostbook installs a Config.cmake file (that's the case, right ?), I would 
make the Boostbook functions part of Boostbook, i.e. include() the file 
containing the functions/macros in the Config.cmake file.

Alex



More information about the cmake-developers mailing list