如何在CMake中正确链接OpenSSL?Ubuntu环境链接失败排查
问题:Ubuntu 22.04下CMake链接OpenSSL报错找不到OPENSSL::SSL目标
我在Ubuntu 22.04系统中尝试通过CMake将OpenSSL库链接到项目,编写的CMake配置代码如下:
cmake_minimum_required(VERSION 3.4.1) project (test) add_executable(test test.cpp) find_package(OpenSSL REQUIRED) target_link_libraries( test PRIVATE OPENSSL::SSL )
执行后出现错误:Target "test" links to target "OPENSSL::SSL" but the target was not found. 我已通过sudo apt install libssl-dev安装OpenSSL,请问该如何解决此问题?
解决方法
升级CMake最低版本要求:
OPENSSL::SSL这类导入目标是CMake 3.5及以上版本才支持的特性,你的配置里指定的最低版本是3.4.1,直接调高版本即可:cmake_minimum_required(VERSION 3.5)Ubuntu 22.04默认自带的CMake版本是3.22.1,完全满足这个要求。
改用传统变量链接(兼容旧版本CMake):如果调整版本后仍有问题,可以放弃导入目标,使用
find_package(OpenSSL)提供的传统变量:find_package(OpenSSL REQUIRED) target_link_libraries(test PRIVATE ${OPENSSL_LIBRARIES}) target_include_directories(test PRIVATE ${OPENSSL_INCLUDE_DIR})清理CMake缓存重新构建:有时候旧的缓存会导致异常,删除build目录后重新生成:
rm -rf build && mkdir build && cd build && cmake ..
内容的提问来源于stack exchange,提问作者Vanconts
相关产品推荐
相关产品推荐

