使用vcpkg启用gssapi构建libssh



我试图用vcpkg为windows x86构建libssh,但我需要启用gssapi支持。使用标准命令vcpkg安装libssh,我得到一个动态库,但日志文件显示gssapi支持不内置。

[1/2] cmd /c "cd ../../x86-windows-dbg && "C:/dev/vcpkg/downloads/tools/cmake-3.22.2-windows/cmake-3.22.2-windows-i386/bin/cmake.exe" "C:/dev/vcpkg/buildtrees/libssh/src/b6ec41911d-e3ea74b3ae.clean" "-G" "Ninja" "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_INSTALL_PREFIX=C:/dev/vcpkg/packages/libssh_x86-windows/debug" "-DWITH_MBEDTLS=ON" "-DWITH_ZLIB=OFF" "-DWITH_EXAMPLES=OFF" "-DUNIT_TESTING=OFF" "-DCLIENT_TESTING=OFF" "-DSERVER_TESTING=OFF" "-DWITH_NACL=OFF" "-DWITH_GSSAPI=OFF" "-DWITH_SYMBOL_VERSIONING=OFF" "-DCMAKE_MAKE_PROGRAM=C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" "-DBUILD_SHARED_LIBS=ON" "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/toolchains/windows.cmake" "-DVCPKG_TARGET_TRIPLET=x86-windows" "-DVCPKG_SET_CHARSET_FLAG=ON" "-DVCPKG_PLATFORM_TOOLSET=v142" "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON" "-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DVCPKG_APPLOCAL_DEPS=OFF" "-DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON" "-DVCPKG_CXX_FLAGS=" "-DVCPKG_CXX_FLAGS_RELEASE=" "-DVCPKG_CXX_FLAGS_DEBUG=" "-DVCPKG_C_FLAGS=" "-DVCPKG_C_FLAGS_RELEASE=" "-DVCPKG_C_FLAGS_DEBUG=" "-DVCPKG_CRT_LINKAGE=dynamic" "-DVCPKG_LINKER_FLAGS=" "-DVCPKG_LINKER_FLAGS_RELEASE=" "-DVCPKG_LINKER_FLAGS_DEBUG=" "-DVCPKG_TARGET_ARCHITECTURE=x86" "-DCMAKE_INSTALL_LIBDIR:STRING=lib" "-DCMAKE_INSTALL_BINDIR:STRING=bin" "-D_VCPKG_ROOT_DIR=C:/dev/vcpkg" "-D_VCPKG_INSTALLED_DIR=C:/dev/vcpkg/installed" "-DVCPKG_MANIFEST_INSTALL=OFF""
-- The C compiler identification is MSVC 19.29.30145.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Could NOT find NSIS (missing: NSIS_MAKE) 
-- Performing Test WITH_/D__CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_1_FLAG
-- Performing Test WITH_/D__CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_1_FLAG - Success
-- Performing Test WITH_/D__CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT_1_FLAG
-- Performing Test WITH_/D__CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT_1_FLAG - Success
-- Performing Test WITH_/D__CRT_NONSTDC_NO_WARNINGS_1_FLAG
-- Performing Test WITH_/D__CRT_NONSTDC_NO_WARNINGS_1_FLAG - Success
-- Performing Test WITH_/D__CRT_SECURE_NO_WARNINGS_1_FLAG
-- Performing Test WITH_/D__CRT_SECURE_NO_WARNINGS_1_FLAG - Success
-- Found PThreads4W: optimized;C:/dev/vcpkg/installed/x86-windows/lib/pthreadVC3.lib;debug;C:/dev/vcpkg/installed/x86-windows/debug/lib/pthreadVC3d.lib  
-- PThreads4W_DLL_DIR: C:/dev/vcpkg/installed/x86-windows/include/../bin
-- PThreads4W_DEBUG_DLL_DIR: C:/dev/vcpkg/installed/x86-windows/include/../debug/bin
-- Found mbedTLS: C:/dev/vcpkg/installed/x86-windows/include (found version "2.28.0") 
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE  
-- Looking for argp.h
-- Looking for argp.h - not found
-- Looking for pty.h
-- Looking for pty.h - not found
-- Looking for utmp.h
-- Looking for utmp.h - not found
-- Looking for termios.h
-- Looking for termios.h - not found
-- Looking for unistd.h
-- Looking for unistd.h - not found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for util.h
-- Looking for util.h - not found
-- Looking for libutil.h
-- Looking for libutil.h - not found
-- Looking for sys/time.h
-- Looking for sys/time.h - not found
-- Looking for sys/utime.h
-- Looking for sys/utime.h - found
-- Looking for sys/param.h
-- Looking for sys/param.h - not found
-- Looking for arpa/inet.h
-- Looking for arpa/inet.h - not found
-- Looking for byteswap.h
-- Looking for byteswap.h - not found
-- Looking for glob.h
-- Looking for glob.h - not found
-- Looking for valgrind/valgrind.h
-- Looking for valgrind/valgrind.h - not found
-- Looking for io.h
-- Looking for io.h - found
-- Looking for 3 include files winsock2.h, ..., wspiapi.h
-- Looking for 3 include files winsock2.h, ..., wspiapi.h - found
-- Looking for include files winsock2.h, ws2tcpip.h
-- Looking for include files winsock2.h, ws2tcpip.h - found
-- Looking for isblank
-- Looking for isblank - found
-- Looking for strncpy
-- Looking for strncpy - found
-- Looking for strndup
-- Looking for strndup - not found
-- Looking for strtoull
-- Looking for strtoull - found
-- Looking for explicit_bzero
-- Looking for explicit_bzero - not found
-- Looking for memset_s
-- Looking for memset_s - not found
-- Looking for vsnprintf
-- Looking for vsnprintf - found
-- Looking for snprintf
-- Looking for snprintf - found
-- Looking for _vsnprintf_s
-- Looking for _vsnprintf_s - found
-- Looking for _vsnprintf
-- Looking for _vsnprintf - found
-- Looking for _snprintf
-- Looking for _snprintf - found
-- Looking for _snprintf_s
-- Looking for _snprintf_s - found
-- Looking for ntohll
-- Looking for ntohll - found
-- Looking for htonll
-- Looking for htonll - found
-- Looking for select
-- Looking for select - found
-- Looking for getaddrinfo
-- Looking for getaddrinfo - found
-- Looking for _strtoui64
-- Looking for _strtoui64 - found
-- Looking for SecureZeroMemory
-- Looking for SecureZeroMemory - found
-- Performing Test HAVE_GCC_THREAD_LOCAL_STORAGE
-- Performing Test HAVE_GCC_THREAD_LOCAL_STORAGE - Failed
-- Performing Test HAVE_MSC_THREAD_LOCAL_STORAGE
-- Performing Test HAVE_MSC_THREAD_LOCAL_STORAGE - Success
-- Performing Test HAVE_CONSTRUCTOR_ATTRIBUTE
-- Performing Test HAVE_CONSTRUCTOR_ATTRIBUTE - Failed
-- Performing Test HAVE_DESTRUCTOR_ATTRIBUTE
-- Performing Test HAVE_DESTRUCTOR_ATTRIBUTE - Failed
-- Performing Test HAVE_FALLTHROUGH_ATTRIBUTE
-- Performing Test HAVE_FALLTHROUGH_ATTRIBUTE - Failed
-- Performing Test HAVE_GCC_VOLATILE_MEMORY_PROTECTION
-- Performing Test HAVE_GCC_VOLATILE_MEMORY_PROTECTION - Failed
-- Performing Test HAVE_COMPILER__FUNC__
-- Performing Test HAVE_COMPILER__FUNC__ - Success
-- Performing Test HAVE_COMPILER__FUNCTION__
-- Performing Test HAVE_COMPILER__FUNCTION__ - Success
-- Performing Test HAVE_LD_VERSION_SCRIPT
-- Performing Test HAVE_LD_VERSION_SCRIPT - Failed
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Threads_FOUND=TRUE
-- ********************************************
-- ********** libssh build options : **********
-- zlib support: OFF
-- libgcrypt support: OFF
-- libmbedTLS support: ON
-- libnacl support: OFF
-- SFTP support: ON
-- Server support : ON
-- GSSAPI support : OFF
-- GEX support : ON
-- Pcap debugging support : ON
-- Build shared library: ON
-- Unit testing: OFF
-- Client code testing: OFF
-- Blowfish cipher support: OFF
-- Server code testing: OFF
-- Public API documentation generation
-- Benchmarks: OFF
-- Symbol versioning: OFF
-- Allow ABI break: OFF
-- Release is final: 
-- Global client config: /etc/ssh/ssh_config
-- Global bind config: /etc/ssh/libssh_server_config
-- ********************************************
-- Configuring done
-- Generating done

我是vcpkg和cmake的新手,我明白了,你可以用三元组文件将选项传递给vcpkg。因此,我尝试在自定义三元组中传递WITH_GSSAPI选项:

set(VCPKG_TARGET_ARCHITECTURE x86)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_CXX_FLAGS "/DWITH_GSSAPI")
set(VCPKG_C_FLAGS "/DWITH_GSSAPI")

但这也不行。那么,如何使用vcpkg编译支持gssapi的libssh呢?

可以添加vcpkg端口支持的特性。为您的vcpkg.json添加功能

{
"name": "libssh",
"default-features": true,
"features": [ "zlib" ]
},

您可以在https://vcpkg.io/en/packages.html

我没有特别看到gssapi,这意味着你应该做一个拉请求并添加它。

Feature Name: zlib
Description: libssh with zlib
Build-Depends: zlib
Feature Name: openssl
Description: Crypto support (OpenSSL)
Build-Depends: openssl
Feature Name: crypto
Description: Default crypto backend
Build-Depends: [object Object]
Feature Name: mbedtls
Description: Crypto support (mbedTLS)
Build-Depends: [object Object],[object Object]

最新更新