代码之家  ›  专栏  ›  技术社区  ›  ruipacheco

CMake返回不匹配的OpenSSL包含和库

  •  1
  • ruipacheco  · 技术社区  · 6 年前

    我通过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库?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tsyvarev    6 年前

    您可以使用提示CMake有关OpenSSL位置的信息 OPENSSL_ROOT_DIR 变量(非 变量!)通过将其设置为 /opt/local . 其他提示方式,如中所述 CMake not able to find OpenSSL library


    请注意,在系统目录下“隐藏”库可能非常棘手 /usr/lib