Пакет 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
Другие вопросы по тегам