Cmake链接第三方库的三种方法

本文介绍链接第三方库的3种方法(以OpenBLAS举例。使用的工程名称为Test_lib(可执行文件名字),主程序为library.c。代码中的各路径请自行替代):

(1)通过OpenBLASConfig.cmake文件(其中的内容是lib和头文件位置),然后使用find_package查找即可。具体代码如下:

复制代码
  1. add_executable(Test_lib library.c)

  2. set(OpenBLAS_DIR "/path to .camke文件")

  3. find_package(OpenBLAS REQUIRED)

  4. include_directories(${OpenBLAS_INCLUDE_DIRS})

  5. target_link_libraries(Test_lib ${OpenBLAS_LIBRARIES})

.cmake一般会由第三方库自动生成,去安装路径寻找。里面包含的是库文件和头文件的路径设置。

(2)通过find_library直接设置设置库文件和头文件的地址,具体代码如下:

复制代码
  1. include_directories(/path to OpenBLAS/include/)

  2. find_library(OPENBLAS NAMES OpenBLAS PATHS /path to OpenBLAS/lib/ NO_DEFAULT_PATH)

  3. add_executable(Test_lib library.c)

  4. target_link_libraries(Test_lib ${OPENBLAS})

(3)通过link_directories直接设置库文件和头文件的地址,具体代码如下:

复制代码
  1. include_directories(/path to OpenBLAS/include/) # 头文件的路径

  2. link_directories(/path to OpenBLAS/lib/) # .a文件的路径

  3. add_executable(Test_lib library.c)

  4. target_link_libraries(Test_lib libopenblas.a)

注意,在第3种方法下,add_executable语句一定要在link_directories之后,否则会找不到库文件。(不知道是不是新版本的cmake(使用的版本是3.15.3)才会有这个问题。网上的例子很多都是放在link_directories之前的。)

cmake官方认为应该尽量避免使用这个方法,尽量使用find_package() 和 find_library():link_directories --- CMake 3.13.5 Documentation

相关推荐
云手机掌柜21 小时前
亚矩阵云手机:亚马逊第三方店铺多账号安全合规运营的核心技术支撑
安全·智能手机·矩阵·手机
云手机掌柜1 天前
云手机矩阵:重构企业云办公架构的技术路径与实践落地
智能手机·矩阵·重构
曼岛_1 天前
[系统架构设计师]安全架构设计理论与实践(十八)
安全·系统架构·安全架构·系统架构设计师
wanhengidc2 天前
造成云手机闪退的原因有哪些?
服务器·网络·安全·智能手机·媒体
秋名山码民3 天前
基于YOLO11的手机违规使用检测模型训练实战
智能手机
liupengfei-iot3 天前
AutoGLM2.0背后的云手机和虚拟机分析(非使用案例)
人工智能·智能手机·ai编程
数据超市5 天前
香港数据合集:建筑物、手机基站、POI、职住数据、用地类型
大数据·人工智能·智能手机·数据挖掘·数据分析
wanhengidc6 天前
当云手机出现卡顿怎么办?
运维·服务器·安全·智能手机
任飘雪6 天前
谷歌手机刷机和面具ROOT保姆级别教程
智能手机
AirDroid_cn6 天前
手机分身空间:空间自由切换,一机体验双重生活!
智能手机