Thank you Craig. >> Imported targets are definitely more preferable though
Can you please elaborate on this? On Tue, Apr 10, 2018 at 10:23 AM Craig Scott <craig.sc...@crascit.com> wrote: > > On Tue, Apr 10, 2018 at 11:07 PM, Saad Khattak <saadrus...@gmail.com> > wrote: > >> Hi, >> >> My project is setup in such a way that I perform a FetchContent 'only if' >> my find_package fails. >> >> This works very well until I start building different configurations. >> Let's say I generate and build Debug for my project. My project tries to >> find_package(LibA QUIET) and cannot find it. So, it performs a >> FetchContent(...) step, builds the dependency and my library and installs >> everything. This works flawlessly. >> >> Now I start building a Release version with different build and install >> folders. Unfortunately, find_package(LibA QUIET) finds the Debug libraries >> and does not perform a FetchContent(...) step and in turn doesn't build the >> Release version of the dependent library. Consequently, the linking step >> fails. >> >> Is there an easy way around this issue? >> >> I say 'easy' because I could write some CMake scripts to search for the >> libraries after a successful find_package(...) and if it only finds >> libraries for Debug when it really wants Release, it performs a >> FetchContent(...). However, this could be quite fragile. >> >> It would be nice if CMake has a way of knowing if an installed library, >> found through find_package(...) is Debug, Release, RelWithDebInfo etc. >> > > If the package found by find_package() is picking up a config file > generated by CMake, then you can check the IMPORTED_CONFIGURATIONS property > of its imported target(s). This will give you a list of configurations the > package provides. Ideally, a single package should cover all relevant build > types, not one package per build type. This is up to the project itself > though and how it builds/installs its package. If the found package only > provides variables instead of imported targets, then you'll have to work > harder and go through whatever variables it provides to see if you can work > out what the package can give you. Imported targets are definitely more > preferable though. > > > -- > Craig Scott > Melbourne, Australia > https://crascit.com >
-- 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