[CMake] Problem with FindXercesC.cmake
Mateusz Loskot
mateusz at loskot.net
Thu Sep 27 17:55:03 EDT 2018
On Thu, 27 Sep 2018 at 23:34, Dorier, Matthieu <mdorier at anl.gov> wrote:
>
> When I call find_package(XercesC REQUIRED) and XercesC is not in a standard location, I have to set XercesC_INCLUDE_DIR to its include directory and XercesC_LIBRARY to the location of the library.
Correct. If Find-module can not guess, you help it by setting
FOO_INCLUDE_DIR and FOO_LIBRARY.
> If I set XercesC_LIBRARY to the directory containing the library (not to the fullpath of the library itself), cmake finds XercesC but sets XercesC_LIBRARIES to the folder instead of the library, and the same for the XercesC::XercesC target. It seems I truly have to set XercesC_LIBRARY to the name of the library rather than the path to the folder containing it, which kinds of defies the point of find_package...
Find-modules are guessers and as such they do not guarantee they will
find anything.
Sometimes you need to help it, by setting some standard variables,
https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html
Xxx_INCLUDE_DIR - Where to find headers for using the Xxx library.
Xxx_LIBRARY - The path of the Xxx library
Then, Find-module can also perform extra checks of the explicitly
specified library
for eg. version, symbols, functions, etc.
> I use to rely on a custom FindXercesC.cmake file that was using XercesC_ROOT to figure all this out.
> Is there any way to do the same here?
There seem to be no Xxx_ROOT_DIR handled by this module
https://cmake.org/cmake/help/latest/module/FindXercesC.html
Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net
More information about the CMake
mailing list