我正在使用我在Mac上通过Homebrew安装的更新版本的openssl,并且想知道是否有办法为CMAKE的FIND_PACKAGE函数设置启动路径?现在,当我尝试使用FIND_PACKAGE CMAKE查找我的操作系统使用的openssl的旧版本时。我目前在我的CMakeLists.txt中使用它
SET(OPENSSL_LIB_DIR /usr/local/Cellar/openssl/1.0.2f/lib)
INCLUDE_DIRECTORIES(/usr/local/Cellar/openssl/1.0.2f/include)
TARGET_LINK_LIBRARIES(mangaMe ${OPENSSL_LIB_DIR}/libcrypto.dylib ${OPENSSL_LIB_DIR}/libssl.dylib)
我唯一的问题是,如果我的openssl更新,我必须手动更新路径中的版本。我试过阅读CMAKE FIND_PACKAGE文档,但不确定我将使用哪些PATH变量来获得我想要的效果。
答案 0 :(得分:5)
您可以将OPENSSL_ROOT_DIR
cmake变量或OPENSSL_ROOT_DIR
env变量设置为以下路径:/usr/local/Cellar/openssl/*
,然后使用find_package
。例如:
set(OPENSSL_ROOT_DIR /usr/local/Cellar/openssl/*)
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${OPENSSL_LIBRARIES})
答案 1 :(得分:4)
您可以在调用FindOpenSSL之前使用OPENSSL_ROOT_DIR
:
set(OPENSSL_ROOT_DIR /usr/local/Cellar/openssl/1.0.2f/)
include(FindOpenSSL)
答案 2 :(得分:0)
Cmake附带FindOpenSSL.cmake模块,该模块在搜索openssl库时使用OPENSSL_ROOT_DIR变量。 最好使用该接口,因为它处理版本(major.minor,patch)和其他相关的libs hadling等。
您可以在调用cmake时通过命令行使用它,或者像其他人指向的那样在源代码中设置它。
cmake -DOPENSSL_ROOT_DIR = / path / to / openssl ....
一般情况下,如果您正在尝试查找未提供默认cmake moudules的其他库,则可以使用
HINTS,PATHS,PATH_SUFFIXES和其他变量(如NO_DEFAULT_PATH(和其他NO_ *))告诉cmake不要查看标准路径。
PATH = path to the location of library
#this makes sense when PATH is pointed to the 'root' of the package location
# for examle,path=/usr path_suffix=lib64 lib32 lib
PATH_SUFFIXES = lib lib64 lib32
NO_DEFAULT_PATH # Only look in above PATHs and nowhere else.