On 10.03.2018 23:01, Alan W. Irwin wrote:
Anyhow, your thoughts would be appreciated for reasonable best
practice limits on how far (if any) beyond the common code case you
would go to convert an old project to use
ALIAS libraries and modules in the build tree that have to be
implemented in any case for CMake code that is common to
both the build tree and install tree.



Hello Alan,

I agree with your assessments.

Assuming a project that is highly structured through directory scopes I might consider the following.

Any target is defined in exactly one directory scope.
Any command that extends the definition of a target has to use the original target name and should be in the same directory scope.

In all other directory scopes I'd consider consistent use of a target's alias.

While it is less likely for a seasoned developer to trip over the interpretation ambiguity in link libraries (due to familiarity and the fact that they probably already tripped over this and know the symptoms) it might still be beneficial for new / casual contributors which as likely consumers might also already be familiar with the aliases.

One minor additional benefit might be that you are also not allowed to modify the original target through an alias. As such this would prevent you (assuming you stick to the namespaced names) from modifying targets from within foreign scopes which I think is a good thing to enforce.

Beyond that consumers might be looking at your code base for examples on how to use the libraries in their own code where consistency might be beneficial. It might also help (slightly) if you ever decided to split off parts of your project into new projects (which then would become consumers of the exported targets).

Nils
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to