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

相关推荐
花先锋队长9 小时前
华为Mate XT2铰链防尘保养指南:如何让三折叠开合长久丝滑如初?
华为·智能手机·harmonyos
sbjdhjd11 小时前
从“删除后重生”到认证绕过:PHP 常驻内存实验与 Cacti remote_agent 命令执行链路复盘
安全·web安全·网络安全·数据挖掘·php·网络攻击模型·安全架构
大象AI共学1 天前
想在手机上读 Obsidian?Mac → iPhone / 安卓的零成本方案
macos·智能手机·iphone
李永奉1 天前
中科蓝讯SDK开发-耳机项目功耗问题排查教程
c语言·开发语言·嵌入式硬件·物联网·智能手机
牛哥带你学代码2 天前
远程打游戏远控测评
人工智能·智能手机
猫哥随身wifi2 天前
随身WiFi 怎么选?2026 主流品牌随身 WiFi 对比与选购避坑参考
网络·人工智能·5g·智能手机
猫哥随身wifi2 天前
AI 手机越智能,随身网络越关键|AI 终端带来的网络新需求
网络·人工智能·智能手机
终端安全笔记2 天前
iOS 27 强制 TLS 1.2:租赁设备的注册链路会在哪一环断
android·网络·安全·ios·智能手机
PiaoKe___3 天前
云手机虚拟化架构与多实例集群自动
智能手机·架构
威嵌神州4 天前
便携式加固产品方案:加固平板、手持终端、巡检仪、管理柜
嵌入式硬件·智能手机·电脑