因此,尝试在windows上CMake libgit,我已经构建了一个有效的libssh2,但是我在编译libgit时得到了这个错误
现在我尝试了设置默认前缀路径,我尝试了设置库路径,但我只是无法让它看到我的libssh2?有什么想法吗?
它变得相当令人沮丧,因为我把它放在这里,它找不到它。
也许有人能告诉我它应该安装的正确路径?
向罗伯问好
*更新1*
因此,我从make文件this....seems中取出进行了更改,但据我所知,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文件。嗯,我直接在上面找到了it....pointed,它还是找不到吗?我甚至从上面指向了几个目录。pc文件中的路径似乎与我所期望的位置相匹配。这是一个完整的文件吗?
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编写它的人,但是为了满足他们自己的需要,对它进行了修改。
所以我把它改回来用下面的。不再抱怨和发现它所需要的,编译和工作。所以谢谢你的帮助
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()发布于 2016-04-16 09:00:03
实际上,我在这个问题上启动了一个新的线程,最后我成功地管理了它。答案在libgit2 with libssh2 and libopenssl on windows上
如此有效
LIBSSH2_FOUND (set it to TRUE)
LIBSSH2_INCLUDE_DIRS
LIBSSH2_LIBRARY_DIRShttps://stackoverflow.com/questions/32744681
复制相似问题