2018-05-16 9:33 GMT+02:00 Drago Trusk <drago.tr...@gmail.com>:

> Hi everyone,
>
> I have particular problem which I'm unable to solve.
>
> Lets say there are following components:
>  - Main: library/executable
>  - Ignorable: Main requires it to build, but not for packaging
>
> Main simply defines:
> add_dependencies(Main Ignorable)
>
> FindIgnorable.cmake contains something like:
> add_custom_target(Ignorable
>   COMMAND ... ... && cmake --build --target install .
>   # ...
> )
>
> Problem is that deb cpack generator picks this from install tree (tar/zip
> doesn't contain Ignorable). So deb ends up with:
> # ... correct fs hierarchy
> /home/saduser/projects/ignorableinstall
>
> I need to avoid dependency used only for building artifacts.
>
> What I found:
> - Remove add_dependency
> ---- Problem: have to build dependencies manually and will break CI and
> other people builds
> - Disable automatic packaging of everything and specify custom components
> to package
> ---- Problem: Dependency tree which might be bigger and requires to know
> too many details. In addition requires for outside  changes so that all
> targets have (appropriate)  install conponents.
>
> I tried everything else that is possible. Am i missing something or are
> those two only viable options?
>

I think the second option should be ok and not that complicated.
Put the "Ignorable" in an "IgnoredComp" install component and remove this
component from the list of installed components.

get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
list(REMOVE_ITEM CPACK_COMPONENTS_ALL """)

see: https://cmake.org/cmake/help/v3.11/module/CPackComponent.html

AFAIR you don't need to defined a component for every install because CPack
already does that for you.
I think that every bits installed without component specification ends-up
in the trap-them-all
"Unspecified" component which is automatically created by CPack.

see:
https://cmake.org/cmake/help/v3.11/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME.html

Another way to do that even more simply (**if you are sure no component are
defined**)
would be to:

1) install ignorable in "IgnoredComp" component
2) let all other be in your default component
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "InstallThatOnly")
3) only install your default component
set(CPACK_COMPONENTS_ALL "InstallThatOnly")


-- 
Eric
-- 

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