繁体   English   中英

CMake设置FIND_PACKAGE的起始路径?

[英]CMake set start path for FIND_PACKAGE?

我正在使用我在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变量来获得我正在寻找的效果。

您可以将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})

您可以使用OPENSSL_ROOT_DIR调用FindOpenSSL之前:

set(OPENSSL_ROOT_DIR /usr/local/Cellar/openssl/1.0.2f/)
include(FindOpenSSL)

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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM