Hi,

I'm currently migrating a code base from a proprietary MSBuild based generator 
to CMake 3.11 which is shipped with Visual Studio. There are two aspects to 
this task:

1) Integration of custom build steps
2) Presentation in the IDE

The first aspect of integrating all of our custom build steps as custom 
commands works really well. At one point I use an object library to be able to 
use the object files as input to such a custom tool and to link a shared 
library. Both the object library and the shared library are from the 
programmers perspective one logical unit. The object library is just an 
implementation detail. However, as for the second point, the source files are 
displayed with the object library target in the IDE while the shared library 
has no sources. This makes sense from the build targets point of view, but 
surprises the developers.
My approach is to hide all targets which are sort of implementation detail into 
a folder.  To make this work I would like to display the sources with the 
shared library which consumes the object files of the object library. Currently 
this seems to be impossible.

Another inconsistency I noticed regarding the second point is the following: I 
implemented header only libraries as interface libraries in CMake. This works 
fine from the build perspective. Interface libraries however don't allow me to 
list sources, not even headers. As a result, the headers of this header only 
library are not displayed anywhere in the IDE. This is odd, because in 
executable targets for example I can list all headers even if they don't 
contribute to the build process directly and they are displayed in the IDE. 
Using empty custom targets to present the header files works, but they are not 
displayed as C++ libraries in Visual Studio any longer. This also litters the 
solution with lots of extra empty targets.

I'm going to rephrase both described presentation problems into one more 
fundamental question, solutions or workarounds for either of both presentation 
problems are of course welcome: Can I specify sources used for builds and files 
used for display in IDEs separately? I think they are two different things. For 
my use case it would also be sufficient to be able to add extra files for 
display in IDEs to any target.

Regards,
Daniel
-- 

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