Заставить CMake использовать полный путь к библиотеке
У меня следующая проблема. У меня есть отдельное дерево {bin, lib, include} на моей машине с Linux, где установлены CMake и все мои библиотеки, необходимые для моей работы по разработке. Но только переменная окружения PATH установлена в этот каталог bin, и по нескольким причинам я не могу установить LD_LIBRARY_PATH. Все программы внутри этого дерева создаются с использованием RPATH. CMake 3.3.1, который я использую, также находится внутри этого дерева.
Теперь проблема, которую я хочу, чтобы скомпилировать программу с использованием libcurl и установить следующий CMakeLists.txt
PROJECT(EXAMPLE)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
FIND_PACKAGE(CURL REQUIRED)
FIND_PACKAGE(OpenSSL REQUIRED)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
SET(LIBS ${CURL_LIBRARIES} ${OPENSSL_LIBRARIES})
ADD_EXECUTABLE(curl_ex src/curl_ex.c)
TARGET_LINK_LIBRARIES(curl_ex ${LIBS})
Когда я сейчас запускаю CMake, завиток и настройки OpenSSL из моего личного дерева программного обеспечения обнаруживаются из-за того, что он находится внутри того же префикса, что и CMake.
Но когда я строю проект, используяmake VERBOSE=1
Я вижу следующую команду связывания:
gcc CMakeFiles/curl_ex.dir/src/curl_ex.c.o -o curl_ex -rdynamic -lcurl -lssl -lcrypto
и исполняемый файл сборки ссылается на общесистемные установленные библиотеки curl и openssl вместо одного cmake, найденного во время конфигурации.
Как я могу заставить CMake использовать библиотеки, которые он нашел, когда он выполняет связывание?