pkg_check_modules(OPENSSL REQUIRED openssl)中的OPENSSL_LIBRARIES存在ssl;crypto为什么链接不上ssl
时间: 2024-03-27 22:39:09 浏览: 181
PKG_ES6_fork工程案例
在使用pkg_check_modules命令查找OpenSSL库时,如果OpenSSL库同时包含ssl和crypto库,那么OPENSSL_LIBRARIES变量会包含两个库的名称,以分号分隔。例如:
```
OPENSSL_LIBRARIES = /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
```
在链接库时,我们需要将两个库都链接到目标中,才能正常使用OpenSSL库。因此,我们可以在target_link_libraries中使用${OPENSSL_LIBRARIES}变量指定链接库的名称:
```
target_link_libraries(my_target ${OPENSSL_LIBRARIES})
```
这将链接OpenSSL的ssl和crypto库到目标"my_target"中,使得我们可以在代码中正常使用OpenSSL库的功能。
如果我们只需要链接OpenSSL的ssl或crypto库,我们可以使用${OPENSSL_SSL_LIBRARY}和${OPENSSL_CRYPTO_LIBRARY}变量指定链接库的名称。例如:
```
target_link_libraries(my_target ${OPENSSL_SSL_LIBRARY}) # 链接OpenSSL的ssl库
target_link_libraries(my_target ${OPENSSL_CRYPTO_LIBRARY}) # 链接OpenSSL的crypto库
```
总之,当使用pkg_check_modules命令查找OpenSSL库时,需要将OPENSSL_LIBRARIES变量中列出的所有库都链接到目标中,以便正常使用OpenSSL库的功能。
阅读全文