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

相关推荐
智慧地球(AI·Earth)2 天前
给AI配一台手机+电脑?智谱AutoGLM上线!
人工智能·智能手机·电脑
xiaocao_10232 天前
怎么在手机上选择一款好用的桌面待办清单工具
智能手机·待办工具
AIOT魔法师2 天前
修复Android studio的adb无法连接手机问题
adb·智能手机·android studio
老六ip加速器2 天前
手机ip隔离方法
tcp/ip·智能手机·php
zz-zjx2 天前
堡垒机安全架构:从零搭建企业级防护(单节点版)
安全·ssh·安全架构
wanhengidc3 天前
手机云服务是什么意思?
运维·网络·安全·游戏·智能手机
vxtkjzxt8883 天前
手机群控软件的核心本质与技术实现
智能手机
傲琪电子3 天前
傲琪人工合成石墨片:破解智能手机散热困境的创新解决方案
智能手机·材料工程
wanhengidc3 天前
云手机在办公领域中自动化的应用
运维·智能手机·自动化
龙信科技4 天前
【国内电子数据取证厂商龙信科技】被格式化的手机如何恢复数据
科技·智能手机·数据恢复