首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgit2和libssh2 CMake包“libssh2”未找到

Libgit2和libssh2 CMake包“libssh2”未找到
EN

Stack Overflow用户
提问于 2015-09-23 16:20:11
回答 1查看 5.2K关注 0票数 1

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

  • 检查模块“libssh2”
  • 找不到'libssh2‘包
  • 没有找到LIBSSH2。如果CMAKE_PREFIX_PATH安装在默认搜索路径之外,则设置它。
  • 配置已完成

现在我尝试了设置默认前缀路径,我尝试了设置库路径,但我只是无法让它看到我的libssh2?有什么想法吗?

它变得相当令人沮丧,因为我把它放在这里,它找不到它。

也许有人能告诉我它应该安装的正确路径?

向罗伯问好

*更新1*

因此,我从make文件this....seems中取出进行了更改,但据我所知,PKG_CHECK_MODULES(LIBSSH2 libssh2)是检查,也许它没有设置LIBSSH2_FOUND?

代码语言:javascript
复制
# 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文件。嗯,我直接在上面找到了it....pointed,它还是找不到吗?我甚至从上面指向了几个目录。pc文件中的路径似乎与我所期望的位置相匹配。这是一个完整的文件吗?

代码语言:javascript
复制
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构建一个没有错误的visual studio解决方案,该解决方案编译并构建。我从解决方案中安装和打包,并安装在建议的默认位置,我还获取了头文件和库文件,并将它们放在vc文件夹中,一旦我尝试构建共享库并将dll放入system32等,所以我尝试了很多:) libgit仍然找不到希望,这是一个更多的信息。

*更新4*

所以最后修好了..。我回顾了吉特的历史,并指责制造文件。找到了一个最初用FIND_PACKAGE编写它的人,但是为了满足他们自己的需要,对它进行了修改。

所以我把它改回来用下面的。不再抱怨和发现它所需要的,编译和工作。所以谢谢你的帮助

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2016-04-16 09:00:03

实际上,我在这个问题上启动了一个新的线程,最后我成功地管理了它。答案在libgit2 with libssh2 and libopenssl on windows

如此有效

代码语言:javascript
复制
LIBSSH2_FOUND (set it to TRUE)
LIBSSH2_INCLUDE_DIRS
LIBSSH2_LIBRARY_DIRS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32744681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档