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

Walter Gray chrysalisx at gmail.com
Thu Jun 2 21:33:58 EDT 2016


That only gets me part way - there's also the issue of the options & extra
functions defined in protobuf-config.in. My best guess ATM would be to do
something simmilar and create namespaced aliases, then just not include the
protobuf-targets.cmake file from protobuf-config.cmake if
CMAKE_CURRENT_LIST_DIR STREQUAL CMAKE_BINARY_DIR.

On Thu, Jun 2, 2016 at 6:16 PM Nicholas Braden <nicholas11braden at gmail.com>
wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160603/4f24dd61/attachment.html>


More information about the CMake mailing list