我已经从 brew 安装了 OpenSSL,并且find_package
似乎检测到了 brew 版本,但它试图将项目与系统中安装的 OpenSSL 链接起来,即 LibreSSL。
我试图强制find_package
设置库的确切路径,但它什么也没做:
if(APPLE)
set(OPENSSL_ROOT_DIR /usr/local/Cellar/openssl@1.1/1.1.1d/)
endif()
所以我最终手动设置了依赖项,这并不理想,但它同时可以用于开发。
# OpenSSL
find_package(OpenSSL REQUIRED)
if(OPENSSL_FOUND)
if(APPLE)
include_directories(/usr/local/Cellar/openssl@1.1/1.1.1d/include)
list(APPEND LIB_LIST /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libssl.dylib)
list(APPEND LIB_LIST /usr/local/Cellar/openssl@1.1/1.1.1d/lib/libcrypto.dylib)
message(STATUS "OpenSSL Version: ${OPENSSL_VERSION} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
else()
include_directories(${OPENSSL_INCLUDE_DIR})
list(APPEND LIB_LIST ${OPENSSL_LIBRARIES})
message(STATUS "OpenSSL Version: ${OPENSSL_VERSION} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
endif()
endif()
Cmake 输出提供此信息,它从 brew 中检测 OpenSSL 库,但与系统库链接。不知道为什么。
-- OpenSSL Version: 1.1.1d /usr/local/Cellar/openssl@1.1/1.1.1d/include /usr/lib/libssl.dylib;/usr/lib/libcrypto.dylib
希望这有帮助!