Are you setting `CMAKE_INSTALL_PREFIX`? This path is searched before the 
`CMAKE_PREFIX_PATH` is searched. 

Also the find_package paths listed in the documentation are only for libraries 
that provide find_package support. Zlib does not, so it cmake fallsback on the 
FindZLIB.cmake module to do the searching which the search order can be 
entirely up to the author of the module. You can see how FindZLIB.cmake 
searches here:

https://github.com/Kitware/CMake/blob/master/Modules/FindZLIB.cmake#L72 
<https://github.com/Kitware/CMake/blob/master/Modules/FindZLIB.cmake#L72>

Of course, if its not correctly searching the `CMAKE_PREFIX_PATH` then this 
should be considered a bug.

> On Mar 22, 2018, at 11:54 AM, Mario Emmenlauer <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> 
> Dear Stephen,
> 
> thanks a lot for your support! I've tested and your suggestion works!
> 
> But, it does not fully resolve my pain :-( I'm slightly scared now
> because I assumed that cmake would prefer CMAKE_PREFIX_PATH over system
> libraries. In my understanding, the documentation says CMAKE_PREFIX_PATH
> is searched first (1). That aspect is quite crucial to me, because I have
> patched versions of more than 30 standard libraries in CMAKE_PREFIX_PATH.
> If I can not rely that cmake would use the patched versions, then I
> may end up having an "interesting" mix of system and patched libraries
> in my executable :-(
> 
> (1) https://cmake.org/cmake/help/v3.0/command/find_package.html 
> <https://cmake.org/cmake/help/v3.0/command/find_package.html>
> 
> Thanks a lot and all the best,
> 
>    Mario
> 
> 
> On 22.03.2018 17:43, Stephen McDowell wrote:
>> Hi Mario,
>> 
>> Very sorry, I should have looked more closely!  CMAKE_MODULE_PATH is for 
>> libraries that install their own CMake scripts.  You are correct, Zlib only 
>> installs a
>> pkg-config script.  However, FindZLIB.cmake doesn’t appear to use that at 
>> all (aka I don’t believe you /need/ to be setting PKG_CONFIG_PATH).  You 
>> should be
>> able to get away with setting *ZLIB_ROOT*.  So for you I think it would look 
>> like
>> 
>>     cmake .. -DZLIB_ROOT=/data/thirdparty
>> 
>> FindZLIB.cmake will proceed to look for ZLIB_ROOT/include/zlib.h and look in 
>> ZLIB_ROOT/lib for the library.
>> 
>> The XXX_ROOT is typically available for any built-in CMake FindXXX.cmake 
>> modules (see hint at bottom: 
>> https://cmake.org/cmake/help/v3.0/module/FindZLIB.html 
>> <https://cmake.org/cmake/help/v3.0/module/FindZLIB.html> ).
>>  These FindXXX.cmake modules are for this exact scenario: there is a library 
>> that many users want access to that does not install cmake scripts (typically
>> because the library uses a different build system such as autotools).
>> 
>> - - - - -
>> 
>> If you are still having trouble, this is what I used to test this.  I didn’t 
>> actually write code that uses it, but I suspect if you *remove* setting of
>> CMAKE_PREFIX_PATH (I think that’s where your conflict originates from) and 
>> just specify ZLIB_ROOT your problem will be solved (I hope!).
>> 
>> With a very crude CMakeLists.txt:
>> 
>>     cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
>>     project("find_zlib")
>> 
>>     find_package(ZLIB)
>>     if (ZLIB_FOUND)
>>       message(FATAL_ERROR "Found Zlib:\n- ZLIB_INCLUDE_DIRS: 
>> ${ZLIB_INCLUDE_DIRS}\n- ZLIB_LIBRARIES: ${ZLIB_LIBRARIES}")
>>     else()
>>       message(FATAL_ERROR "Did not find Zlib :/")
>>     endif()
>> 
>> *Without* setting ZLIB_ROOT:
>> 
>>     $ cmake ..
>>     -- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.8")
>>     CMake Error at CMakeLists.txt:6 (message):
>>       Found Zlib:
>>       - ZLIB_INCLUDE_DIRS: /usr/include
>>       - ZLIB_LIBRARIES: /usr/lib/libz.dylib
>> 
>> That’s the default Zlib that comes with OS X.  However, if I specify 
>> ZLIB_ROOT:
>> 
>>     $ cmake .. -DZLIB_ROOT=/usr/local/Cellar/zlib/1.2.11/
>>     -- Found ZLIB: /usr/local/Cellar/zlib/1.2.11/lib/libz.dylib (found 
>> version "1.2.11")
>>     CMake Error at CMakeLists.txt:6 (message):
>>       Found Zlib:
>>       - ZLIB_INCLUDE_DIRS: /usr/local/Cellar/zlib/1.2.11/include
>>       - ZLIB_LIBRARIES: /usr/local/Cellar/zlib/1.2.11/lib/libz.dylib
>> 
>> Let us know if it works or if you still need help!
>> 
>> -Stephen
>> 
>> 
>> 
> 
> 
> --
> BioDataAnalysis GmbH, Mario Emmenlauer      Tel. Buero: +49-89-74677203
> Balanstr. 43                   mailto: memmenlauer * biodataanalysis.de 
> <http://biodataanalysis.de/>
> D-81669 München                          http://www.biodataanalysis.de/ 
> <http://www.biodataanalysis.de/>
> -- 
> 
> Powered by www.kitware.com <http://www.kitware.com/>
> 
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ <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 
> <http://cmake.org/cmake/help/support.html>
> CMake Consulting: http://cmake.org/cmake/help/consulting.html 
> <http://cmake.org/cmake/help/consulting.html>
> CMake Training Courses: http://cmake.org/cmake/help/training.html 
> <http://cmake.org/cmake/help/training.html>
> 
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html 
> <http://www.kitware.com/opensource/opensource.html>
> 
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake 
> <https://cmake.org/mailman/listinfo/cmake>
-- 

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

Reply via email to