On Tue, Jul 23, 2019 at 7:04 PM Gordon Koefner <gordon.koef...@vires.com>
wrote:

> Hi all!
>
> We have been migrating our buildsystem to CMake and are trying to use
> the `install` command to deploy different parts of the software.
> However `make install` also installs artifacts from our dependencies,
> internal as well as 3rd party, that are unnecessary/unwanted.
>
> Is there a native way to exclude certain subdirectories or build targets
> from the install set? The only solution I could think of is to manually
> add an option, e.g.:
>
> option(${TARGET_NAME}_INSTALL on "") # on by default
> if(${TARGET_NAME}_INSTALL)
>     install(...)
> endif()
>
> Maybe the culprit is also that we are using find_path and
> add_subdirectory to add any internal dependencies we have to the build
> tree - I am starting to think that this is a mistake.
>
> I have read about ExternalProject - but I am unsure whether this is the
> correct way to go about it but it does allow modification of another build.
>
> How do you guys solve this issue, how can I define which dependencies I
> want installed?
>
> I really want to avoid writing a shellscript to filter out any unwanted
> stuff.
>


A bit late, but clearing my inbox and found this one still unanswered. ;) I
typically handle this situation by defining install components for my own
part of the build (i.e. including COMPONENT options with my install()
commands). Then when I want to make packages, I populate
CPACK_COMPONENTS_ALL with just those components I want included. All
dependencies are part of the build (using FetchContent), it's just that I
don't add their install components to my list so they are left out. I don't
do a bare "make install", I always create packages, so this works for me.
If you did want to do an install directly, you could use the new "cmake
--install" functionality added in CMake 3.15 which supports specifying the
component to install. The end of the documentation page for the install()
command also shows another way to install components selectively (under the
heading Generated Installation Script).

-- 
Craig Scott
Melbourne, Australia
https://crascit.com

Get the hand-book for every CMake user: Professional CMake: A Practical
Guide <https://crascit.com/professional-cmake/>
-- 

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