Libgit2和libssh2 CMake包' libssh2'找不到

时间:2015-09-23 16:20:11

标签: cmake libgit2 libssh2

因此尝试在windows上使用libgit,我已经构建了一个有效的libssh2但是我在编译libgit时遇到了这个错误

  • 检查模块' libssh2'
  • package' 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我在windows上安装了openssl的二进制文件,进一步下载了libssh2-master并使用cmake gui构建了一个没有错误的可视化工作室解决方案,编译和构建了解决方案。我从解决方案中安装并打包并安装在建议的默认位置,我还将头文件和库文件放在我的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 个答案:

答案 0 :(得分:0)

我实际上已经开始了一个新线程,我最终成功地管理了它。答案已经开启 libgit2 with libssh2 and libopenssl on windows

如此有效

Image