[CMake] Calling find_package(self) for in-project builds

Nicholas Braden nicholas11braden at gmail.com
Thu Jun 2 21:16:13 EDT 2016


Although not ideal, you could alias the targets to the names they
would have when imported with find_package() by using
add_library(ALIAS), and then use if(TARGET) to conditionally call
find_package(). This also is a step toward supporting using the
library via add_subdirectory(), if that ever becomes a goal.

On Thu, Jun 2, 2016 at 8:06 PM, Walter Gray <chrysalisx at gmail.com> wrote:
> I'm currently working on protobuf-3.0.0's cmake scripts, and I've hit a bit
> of a chicken and egg problem.
>
> There is an examples directory containing a CMakeLists.txt which we would
> like to work as both a standalone examples directory and include as a sub
> directory of the full build. For obvious reasons, the CMakeLists.txt file
> contains a call to find_package(protobuf).
>
> I can call find_package(protobuf HINTS ${CMAKE_BINARY_DIR}) outside of the
> examples/CMakeLists.txt file to ensure that we've already found the correct
> version, but the problem is that the protobuf-config.cmake file includes the
> export-generated file protobuf-targets.cmake, as well as implementing some
> custom functions that we want to show off as part of the examples.
>
> The obvious solution to me was to use the export command to generate
> protobuf-targets.cmake, but there are 2 problems. First, export(EXPORT)
> doesn't create a file until generation time, but I can get around this using
> export(TARGETS). The second is that, reading CMP0024, this appears to be not
> garunted behavior, and actively discouraged.
>
> What would be the suggested way to handle this?
>
> --
>
> 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


More information about the CMake mailing list