> On Jun 20, 2017, at 10:46 PM, Konstantin Podsvirov <[email protected]>
> wrote:
>
> Hello community!
>
> I want to give a little discussion :)
>
> If I export a package containing several targets.
> And these target are publicly linked to the targets imported from another
> package.
> Where is the best place to look for package dependencies?
>
> I assume the following options:
> - In the Config-file of the package itself;
I believe this is the best practice, and it is why the `find_dependency` macro
exists.
> - The user himself must find them in his project.
>
> It seems to me that to force the user to look for the dependencies of the
> package, which he himself seeks there is bad tone, but also to impose on the
> user, then how I myself found these dependencies in Config-file may not
> appeal to everyone.
>
> Perhaps there should be some option for setting the behavior of the
> `find_package` command in the part of finding package dependencies? Or she
> already is, but I have not yet studied it.
The user can either use `<package>_DIR` to tell cmake exactly where the package
is, or they can call `find_package(…)` beforehand. However, if the user wants
something completely different then they would either need to provide a Find
module or override `find_package`.
For example, this is common for projects that build their dependencies in the
same project:
set(as_subproject Foo)
macro(find_package)
if(NOT "${ARG0}" IN_LIST as_subproject)
_find_package(${ARGV})
endif()
endmacro()
add_subdirectory(Foo)
add_subdirectory(App)
This makes `find_package(Foo)` do nothing since the target `Foo::Foo` would be
part of the project.
--
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:
http://public.kitware.com/mailman/listinfo/cmake