On 22 March 2013 21:25, Andreas Stahl <andreas.st...@tu-dresden.de> wrote: > Am 22.03.2013 um 16:59 schrieb Mateusz Loskot <mate...@loskot.net>: >> >> I'm trying to build software which uses libE57 library which has >> Xerces as dependency. >> I build Xerces too as part of my project and I deploy it in custom locations >> and Xerces library has custom name. >> >> libE57 provides FindXerces.cmake [1] and I've been trying to figure >> out how I can >> make this module find Xerces I provide, I tried to explicitly the two >> variables: >> Xerces_INCLUDE_DIR >> Xerces_LIBRARY >> on invocation of cmake, but obviously this FindXerces.cmake is still nagging >> me >> about XERCES_ROOT >> >> This is first time when I have to deal with CMake-based software and custom >> names and locations of libraries, so I'm not sure either I'm missing some >> important tricks here or this FindXerces.cmake is just poorly written module >> and it does not check if user passes <NAME>_INCLUDE or <NAME>_LIBRARY >> directly. >> >> I know I can also use CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH, >> but how to deal with custom library names, when this module expects >> two options only [2]. >> >> Could anyone advise about workaround? >> >> Is this an issue in the FindXerces.cmake and would you say it's worth >> to submit bug report to libE57? >> >> [1] >> http://sourceforge.net/p/e57-3d-imgfmt/code/331/tree/trunk/cmake/Modules/FindXerces.cmake >> [2] >> http://sourceforge.net/p/e57-3d-imgfmt/code/331/tree/trunk/cmake/Modules/FindXerces.cmake#l44 > > > Try setting the environment variable set($ENV{XERCES_ROOT} /path/to/xerces) > to the directory where you installed the library, > before you call find_package. That should be enough.
I have tried that and it does not work. But, even without trying the XERCES_ROOT, I already know it won't work, because as I explained I use custom structure where I keep Xerces and I use custom name for Xerces .lib. What I need is this: -DXerces_LIBRARY=C:\build\lib\msvc10\debug\xerces_MDd.lib -DXerces_INCLUDE_DIR=C:\src\xerces But, as you can see in the FindXerces.cmake [1], it assumes include subdirectory ${XERCES_ROOT}/include and it looks up for hard-wired names: xerces-c_static_3D.lib libxerces-c.a But, trying to make use of the find_package_handle_standard_args here by setting valid Xerces_LIBRARY and Xerces_INCLUDE_DIR to make CMake to consider Xerces as found. I'm not sure why it does not work. If it does not work because FindXerces.cmake is faulty, I'd like to fix it and submit patch to libE57. Best regards, -- Mateusz Loskot, http://mateusz.loskot.net -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake