首先,我们使用libssh2
使用WinCNG
后端构建msvc
:
cmake . -DCRYPTO_BACKEND=WinCNG -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=%LIBSSH2%
cmake --build . --target install
libgit2
文档说,我们要做的就是设置DEMBED_SSH_PATH
,尽管它没有提及要设置的内容。也许是如此明显以至于似乎无关紧要。但是:我不是C
人,也不知道cmake构建过程。据我了解,先前构建的结果及其所有子文件夹(例如include
和bin
)所在的文件夹应该是正确的路径,因此使用%LIBSSH2%
应该可以。
当最终尝试构建正在运行的libgit2
时>
cmake . -DBUILD_CLAR=OFF -DCMAKE_BUILD_TYPE=Release -DEMBED_SSH_PATH=%LIBSSH2% -DCMAKE_INSTALL_PREFIX="%LIBGIT2%" cmake --build . --target install
它将失败,因为它找不到头文件/二进制文件的链接。我们沿着以下方向看待事物:
error LNK2019: unresolved external symbol libssh2_init referenced in function
我已经尝试用普通斜杠
\
替换路径反斜杠/
,因为这似乎是一个常见问题。我也尝试过显式设置
set CMAKE_INCLUDE_PATH=%LIBSSH2%/include set CMAKE_LIBRARY_PATH=%LIBSSH2%/lib
均失败,结果相同。
谁能提供一种可复制的方式来编译带有嵌入式libgit2
的libssh2
?
[首先,我们使用msvc:cmake用WinCNG后端构建libssh2。 -DCRYPTO_BACKEND = WinCNG -DCMAKE_BUILD_TYPE =发行-DBUILD_SHARED_LIBS = ON -DCMAKE_INSTALL_PREFIX =%LIBSSH2%cmake --build。 --target ...
使用EMBED_SSH_PATH
意味着libssh2源将与libgit2s同时编译。这意味着您实际上根本不需要编译libssh2。