The following issue has been SUBMITTED. ====================================================================== http://public.kitware.com/Bug/view.php?id=15132 ====================================================================== Reported By: Greg Jung Assigned To: ====================================================================== Project: CMake Issue ID: 15132 Category: CMake Reproducibility: always Severity: minor Priority: normal Status: new ====================================================================== Date Submitted: 2014-09-06 15:26 EDT Last Modified: 2014-09-06 15:26 EDT ====================================================================== Summary: find_library retrieves libraries from $PATH even when they can be found in the proper locations. Description: Contrary to documentation, find_library usurps my intention when it has an apparent match from $ENV{PATH}.
This also occurs if I specify the preference explicitly via CMAKE_PREFIX_PATH: if the library is found in program path, it picks those up for linkage instead of the specified preference. In the folowing example, I happen to have only one of the libraries fftw3, fftw3f in my /local32/lib. So the FFTWDIR is set to pick up libraries as in FindFFTW.cmake: CMakeLists.txt: set(CMAKE_PREFIX_PATH ${FFTWDIR}) find_package(FFTW QUIET) FindFFTW.cmake: find_library(FFTW_LIBRARY NAMES fftw3) message(STATUS " FFTW_LIBRARY: ${FFTW_LIBRARY}") find_library(FFTWF_LIBRARY NAMES fftw3f) message(STATUS " FFTWF_LIBRARY: ${FFTWF_LIBRARY}") set(FFTW_LIBRARIES ${FFTW_LIBRARY} ${FFTWF_LIBRARY}) find_path(FFTW_INCLUDE_DIR NAMES fftw3.h) result: CMakeCache.txt //GDL: Specifiy the FFTW directory tree FFTWDIR:PATH=D:/programs/win32libs //Path to a library. FFTWF_LIBRARY:FILEPATH=D:/programs/win32libs/lib/libfftw3f.a //Path to a file. FFTW_INCLUDE_DIR:PATH=E:/mingw/local32/include //Path to a library. FFTW_LIBRARY:FILEPATH=E:/mingw/local32/lib/libfftw3.a Steps to Reproduce: put an acceptable library file in your %PATH%, run cmake: SET(CMAKE_PREFIX_PATH "c:/proper/lib") find_library(WRONG libname) Additional Information: In cygwin, I set LDFLAGS="-L/opt/local/lib -L/usr/local/lib" which are ingested, with my modified Platform/UnixPaths.cmake, into CMAKE_SYSTEM_LIBRARY_PATH and into CMAKE_SYSTEM_INCLUDE_PATH. <Platform/UnixPaths> inspecting LDFLAGS: -L/opt/local/lib -L/usr/local/lib <Platform/UnixPaths> adding system library path: /opt/local/lib <Platform/UnixPaths> adding system library path: /usr/local/lib so according to the docs, CMAKE_SYSTEM_LIBRARY_PATH and CMAKE_SYSTEM_INCLUDE_PATH will be utilized in find_library and in find_path, respectively. Instead I get Junk from the mingw side bleeding into it because I have an application directory in %PATH%: PLPLOT_LIBRARY: /cygdrive/d/programs/libplplotd.dll.a FindPlplot> PLPLOT_LIBRARY_DIR: /cygdrive/d/programs PLPLOT_INCLUDE=? /cygdrive/d/programs/../include Found PLPLOT: /cygdrive/d/programs/libplplotd.dll.a;/cygdrive/d/programs/libplplotcxxd.dll.a (errors due to bad linkage) Looking for c_plslabelfunc in /cygdrive/d/programs/libplplotd.dll.a;/cygdrive/d/programs/libplplotcxxd.dll.a Looking for c_plslabelfunc in /cygdrive/d/programs/libplplotd.dll.a;/cygdrive/d/programs/libplplotcxxd.dll.a - not found Of course, I reset my $PATH for the cygwin to run right, but the find_library behavior is wrong. ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2014-09-06 15:26 Greg Jung New Issue 2014-09-06 15:26 Greg Jung File Added: cmakebug ====================================================================== -- 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-developers