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

相关推荐
wulechun4 分钟前
全流程自动化短剧工厂ToonFlow开源项目深度解析与小说转视频实战配置指南
智能手机
ckjr00723 分钟前
手机里的AI功能越来越多,如何让它真正提高日常使用效率?
人工智能·智能手机
北邮刘老师2 小时前
智能体手机的成败关键——智能体互联生态
网络·人工智能·智能手机·智能体·智能体互联网
a5986523 小时前
ARM服务器搭建云手机靠谱吗?个人自建方案优缺点总结
服务器·arm开发·智能手机·云手机
jack186891 天前
如何在华为/小米/OPPO/Vivo等手机上恢复误删除的照片文件?五种方法了解下
智能手机
滼1 天前
AI 数据安全面试应答框架:从大框架到小点
大数据·人工智能·安全·面试·安全架构
wulechun1 天前
基于多智能体协同架构的Customer-Agent开源项目深度解析与自动化客户服务实战指南
智能手机
互联网江湖1 天前
iPhone Duo跌倒,国产折叠屏手机吃饱?
ios·智能手机·iphone
Token_w1 天前
手机远控跑Claude Code:三个AI任务同时运行,ToDesk/UU远程/向日葵终端功能对比
人工智能·智能手机·todesk
AlanAshley1 天前
无 SIM 卡也能打 110?手机紧急呼叫能力的软硬件技术探究
开发语言·智能手机·php