I'm trying to use CMake to use a local, 32-bit version of cURL instead of the installed 64-bit one. When I use the CMake command find_library
it's still returning the path at /usr/lib/x86_64-linux-gnu/libcurl.so
. I've tried using the flags NO_DEFAULT_PATH and NO_SYSTEM_ENVIRONMENT_PATH but still can't force it to look locally first. My code is below:
find_library(MYCURL NAMES libcurl
HINTS ${MY_CURL_DIR}
NO_SYSTEM_ENVIRONMENT_PATH
NO_DEFAULT_PATH)
Where I've specified (and verified) that ${MY_CURL_DIR}
is looking in the correct place. Any ideas?
Are you deleting your CMakeCache.txt
between attempts? Or more specifically, the MYCURL
entry in your CMakeCache.txt
. (This file should exist in the directory you invoke CMake from).
If find_library
successfully finds the library, further executions of CMake don't retry to find the same library.
In your command, the NO_SYSTEM_ENVIRONMENT_PATH
option is superfluous - NO_DEFAULT_PATH
stops any paths other than ${MY_CURL_DIR}
being searched.
Also, you probably don't want to search for "libcurl", just "curl" will do. CMake prepends "lib" for you on UNIX systems. For more info run cmake --help-variable CMAKE_FIND_LIBRARY_PREFIXES
If you want to change the default caching behaviour of find_library
and force a search every time CMake is run, use unset
first:
unset(MYCURL CACHE)
find_library(MYCURL NAMES curl HINTS ${MY_CURL_DIR} NO_DEFAULT_PATH)