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

相关推荐
wulechun15 天前
打造你的专属机器宠物:Py-Apple低成本四足机器人开源项目深度解析与全流程DIY实战指南
智能手机
生成论实验室15 天前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
2601_9547064915 天前
云手机技术详解+Python实战调用|2026高稳云手机平台推荐
开发语言·python·智能手机
百度搜知知学社15 天前
贝格手机罗盘2.8版:精准导航与功能升级全解析
智能手机·功能升级·手机罗盘·导航应用·版本解析
xsc-xyc15 天前
用 Tailscale + Syncthing 实现手机、电脑与 NAS 的跨网络文件同步
linux·网络·网络安全·智能手机·电脑
wulechun15 天前
打造全栈人工智能知识图谱:深入解析Ai-Learn开源学习路线与实战资源导航指南
智能手机
生成论实验室15 天前
自动驾驶:一个自主运动的系统
人工智能·算法·机器学习·语言模型·机器人·自动驾驶·安全架构
X7x515 天前
深度拆解网络安全“闭环”之王——APPDRR模型
网络安全·网络攻击模型·安全威胁分析·安全架构·appdrr模型
X7x515 天前
一文讲透PADIMEE模型
网络安全·网络攻击模型·安全威胁分析·安全架构·padimee模型
wulechun15 天前
从深度研究到全能执行:深度解析字节跳动DeerFlow开源超级智能体框架的架构原理与实战部署指南
智能手机