Пакет libgit2 и libssh2 CMake 'libssh2' не найден
Поэтому, пытаясь CMake libgit на windows, я создаю правильный libssh2, но я получаю эту ошибку при компиляции libgit
- проверка модуля "libssh2"
- пакет 'libssh2' не найден
- LIBSSH2 не найден. Установите CMAKE_PREFIX_PATH, если он установлен за пределами пути поиска по умолчанию.
- Конфигурирование сделано
Теперь я попытался установить путь префикса по умолчанию, и я попытался установить пути к библиотекам, но я просто не могу получить его, чтобы увидеть мою libssh2? есть идеи?
это становится довольно расстраивающим, поскольку я имею это прямо здесь, и это не может найти это:D
Может быть, кто-то может сказать мне правильный путь, он должен быть установлен?
С наилучшими пожеланиями Роб
**************** Обновление 1****************
поэтому я вытащил из файла make этот.... кажется, что он изменился, но насколько я вижу, PKG_CHECK_MODULES(LIBSSH2 libssh2) - это проверка, может быть, она не устанавливает LIBSSH2_FOUND?
# Optional external dependency: libssh2
IF (USE_SSH)
PKG_CHECK_MODULES(LIBSSH2 libssh2)
ENDIF()
IF (LIBSSH2_FOUND)
ADD_DEFINITIONS(-DGIT_SSH)
INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIRS})
LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
LIST(APPEND LIBGIT2_PC_LIBS ${LIBSSH2_LDFLAGS})
#SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} ${LIBSSH2_LDFLAGS}")
SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
CHECK_LIBRARY_EXISTS("${LIBSSH2_LIBRARIES}" libssh2_userauth_publickey_frommemory "${LIBSSH2_LIBRARY_DIRS}" HAVE_LIBSSH2_MEMORY_CREDENTIALS)
IF (HAVE_LIBSSH2_MEMORY_CREDENTIALS)
ADD_DEFINITIONS(-DGIT_SSH_MEMORY_CREDENTIALS)
ENDIF()
ELSE()
MESSAGE(STATUS "LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.")
ENDIF()
я пытался установить LIBSSH2_INCLUDE_DIRS /LIBSSH2_INCLUDE_DIR и LIBSSH2_LIBRARIES безрезультатно?
**************** Обновление 2****************
Так, согласно предложенному поиску файла.pc. хорошо, я нашел это.... указал это непосредственно на это, и это все еще не могло найти это? я даже указал несколько каталогов от него. пути в файле pc, кажется, соответствуют местоположениям, которые я ожидал. этот make-файл только что полностью обработан?
checking for module 'libssh2'
package 'libssh2' not found
LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.
**************** Обновление 3 ****************
Итак, обновление 3: я установил двоичный файл openssl на windows, затем скачал libssh2-master и использовал cmake gui для создания решения для Visual Studio, в котором не было ошибок, решение было скомпилировано и собрано. Я сделал установку и пакет из решения и установил в предложенном месте по умолчанию, я также взял заголовочные файлы и библиотечные файлы и поместил их в свою папку vc, и как только я попытался собрать общую библиотеку и поместить dll в system32 и т. Д. так что я попробовал довольно много:) libgit все еще не могу найти его, надеюсь, это немного больше информации
**************** Обновление 4****************
Итак, исправили это в конце... я вернулся к истории git и обвинил файл make. нашел кого-то, кто изначально написал его с помощью FIND_PACKAGE, но изменил его в соответствии со своими потребностями.
поэтому я изменил его обратно и использовал ниже. больше не жалуется и находит то что нужно и компилирует и работает. так что, да, спасибо за вашу помощь
IF (USE_SSH)
FIND_PACKAGE(LIBSSH2)
ENDIF()
IF (LIBSSH2_FOUND)
ADD_DEFINITIONS(-DGIT_SSH)
INCLUDE_DIRECTORIES(${LIBSSH2_INCLUDE_DIR})
LINK_DIRECTORIES(${LIBSSH2_LIBRARY_DIRS})
LIST(APPEND LIBGIT2_PC_LIBS ${LIBSSH2_LDFLAGS})
SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} libssh2")
SET(SSH_LIBRARIES ${LIBSSH2_LIBRARIES})
ADD_DEFINITIONS(-DGIT_SSH_MEMORY_CREDENTIALS)
ENDIF()
1 ответ
Я фактически начал новую тему по этому вопросу, в конце концов мне это удалось. Ответ на libgit2 с libssh2 и libopenssl на окнах
так эффективно
LIBSSH2_FOUND (set it to TRUE)
LIBSSH2_INCLUDE_DIRS
LIBSSH2_LIBRARY_DIRS