cmake - osx/mac - openssl brew

霸气de小男生 提交于 2020-04-07 19:05:24

问题


i am using the following cmake commands

# Search OpenSSL
find_package(PkgConfig REQUIRED)
pkg_search_module(OPENSSL REQUIRED openssl)

if( OPENSSL_FOUND )

    include_directories(${OPENSSL_INCLUDE_DIRS})
    message(STATUS "Using OpenSSL ${OPENSSL_VERSION}")
else()
    # Error; with REQUIRED, pkg_search_module() will throw an error by it's own
endif()

it works on linux and on Mac - but on mac it uses the osx-shipped libssl - wich throws a alot of deprecation warnings e.g. 'SSL_library_init' is deprecated: first deprecated in OS X 10.7"

using brew i already installed a newer - openssl-offical - libssl - how can i tell the pkg_search_module in cmake to find and use the brew version?

regards


回答1:


As of late 2016 this works for me:

In CMakeLists.txt:

find_package(openssl REQUIRED)

Run cmake like this:

cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl .



回答2:


ok got it working :)

brew upgrade openssl
brew link --force openssl
pkg-config --modversion openssl
#1.0.2

removed the cmake build folder and rerun the cmake .. and the above macro now finds the 1.0.2 libssl :)




回答3:


The cause of this issue is a bug in CMake -- it does not use alternate pkg-config paths correctly.

According to the merge request attached to the bug, the fix should be in cmake 3.17.0 (to be released in Feb 2020).

Otherwise, use this work-around. Hard coding it in your CMakeLists.txt will make things bad for people who use MacPorts instead of Homebrew.




回答4:


Jonathan is right. The MacOS system open ssl is considered insecure. Here is what works for me

  1. Install or upgrade openssl via brew

  2. Add these to your CMakefile. Instead of hard coding you might choose to use a command line parameter or environment variable

    include_directories(BEFORE /usr/local/Cellar/openssl/1.0.2p/include) find_library(OPENSSL_LIB ssl PATHS /usr/local/Cellar/openssl/1.0.2p/lib NO_DEFAULT_PATH) find_library(CRYPTO_LIB crypto PATHS /usr/local/Cellar/openssl/1.0.2p/lib NO_DEFAULT_PATH)

To find the OpenSSL directory use the following command:

brew list openssl


来源:https://stackoverflow.com/questions/29792009/cmake-osx-mac-openssl-brew

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!