1. 不同库有不同的引用方式
OpenCV 使用 ${OpenCV_LIBS}
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
protobuf 使用 ${PROTOBUF_LIBRARIES}
target_link_libraries(${PROJECT_NAME} ${PROTOBUF_LIBRARIES})
jpeg-turbo 使用 libjpeg-turbo::turbojpeg-static 的target名称
target_link_libraries(${PROJECT_NAME} libjpeg-turbo::turbojpeg-static)
2. 怎么确定使用哪种方式
一般有如下方法:
- 查找 cmake 文件,看其使用说明。(一般写得好的cmake文件会有使用说明)
- 查找网上其他人是怎么使用的
- 搜 cmake 文件是否有相关的变量,比如搜OpenCV的相关cmake文件是否有"OpenCV_LIBS"变量
- 查 cmake 文件中相关的target名称
2.1 查找 cmake 文件,看其使用说明
比如OpenCV
在OpenCVConfig.cmake文件顶部会有使用说明如下:
2.2 搜 cmake 文件是否有相关的变量
比如 protobuf
在protobuf-module.cmake中搜到 PROTOBUF_LIBRARIES 变量
2.3 查 cmake 文件中相关的target名称
比如jpeg-turbo
查看 libjpeg-turboTargets.cmake 文件发现相关的target: libjpeg-turbo::turbojpeg-static
不知道大家都是怎么确定的呢
网友评论