【发布时间】:2019-05-25 18:18:16
【问题描述】:
我通过 macports 安装了最新版本的 OpenSSL (1.0.2q),我试图在我的 mac 上构建一个依赖于 OpenSSL 的项目,发现 CMake 似乎返回了错误的库路径或错误的包含路径:
message("@@@")
message(${OPENSSL_INCLUDE_DIR})
message(${OPENSSL_SSL_LIBRARY})
message("/@@@")
打印:
@@@
/opt/local/include
/usr/lib/libssl.dylib
/@@@
所以它为我提供了来自 macports 的 OpenSSL 标头和来自系统的库。
我发现这是因为构建外部库失败并出现链接错误:
Undefined symbols for architecture x86_64:
"_X509_check_host", referenced from:
_ma_tls_verify_server_cert in libmariadbclient.a(openssl.c.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如何让 CMake 只查找和使用 macports 库?
【问题讨论】:
-
与general case 一样,您可以尝试将环境 变量
OPENSSL_ROOT_DIR设置为/opt/local。请注意,从链接器和运行时加载程序“隐藏”系统目录/usr/lib下的库可能非常棘手。通常,CMake 会针对此类情况发出警告。 -
不起作用:-- SSL 支持:OPENSSL 库:/usr/lib/libssl.dylib;/usr/lib/libcrypto.dylib
-
在新尝试之前您是否清除了缓存?
-
不,现在可以了。把它变成一个答案,这样我就可以接受了。
标签: macos cmake openssl macports