我正在尝试使用cmake 3.15.2在windows10上编译restbed with openssl。
我按照here提供的说明操作
因此安装了openssl,如下所示:
cd restbed\dependency\openssl
perl Configure shared VC-WIN64A
nmake
nmake test
nmake install然后我用cmake构建restbed:
cmake -G "Visual Studio 15 2017 Win64" -DBUILD_EXAMPLES=YES -DBUILD_TESTS=YES ..但我总是会出现这样的错误:
CMake Error at cmake/Findopenssl.cmake:23 (message):
Failed to locate OpenSSL dependency. see restbed/dependency/openssl;
./config shared; make all
Call Stack (most recent call first):
CMakeLists.txt:49 (find_package)尽管我在配置命令中使用了shared。
我查了一下Findopenssl.cmake,发现我的电脑上找不到大多数搜索到的文件。
find_library( ssl_LIBRARY_STATIC libssl.a ssleay32.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
find_library( crypto_LIBRARY_STATIC libcrypto.a libeay32.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
find_library( ssl_LIBRARY_SHARED libssl.so libssl.dylib ssleay32.dll HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
find_library( crypto_LIBRARY_SHARED libcrypto.so libcrypto.dylib libeay32.dll HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
find_path( ssl_INCLUDE openssl/ssl.h HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/inc32" "${PROJECT_SOURCE_DIR}/dependency/openssl/include" "/usr/local/opt/openssl/include" "/usr/include" "/usr/local/include" "/opt/local/include" )此外,它们中的大多数似乎都是linux路径。
我到处搜索,发现this question非常相似,但它是在debian而不是windows上工作的。我没有设法找到我的openssl安装中缺少的内容。
你知道这里可能遗漏了什么吗?
谢谢!
发布于 2019-09-05 16:06:04
我找到了问题的根源和解决方案。
由于openssl更改了libcrypto.lib和libssl.lib的库,因此当前的Findopenssl.cmake无法找到它要查找的内容:libeay32.lib和`ssleay32.lib。
我不能仅仅通过在find_library中更改它们的名称来使其工作,所以我只注释了这些内容,并添加了这两行Findopenssl.cmake:
set(ssl_LIBRARY_SHARED "${PROJECT_SOURCE_DIR}/dependency/openssl")
set(crypto_LIBRARY_SHARED "${PROJECT_SOURCE_DIR}/dependency/openssl")它有点脏,但效果很好。
发布于 2020-06-10 22:47:58
这是另一个answer
cd restbed/dependency/openssl
./config; makehttps://stackoverflow.com/questions/57787207
复制相似问题