CMakeLists.txt语法(四)

一.简介

使用外部动态库或者静态库,生成可执行文件。

二.外部库

1.外部库头文件

testlib.h存放目录:/usr/local/testLIB

c 复制代码
#ifndef TEST_LIB_H
#define TEST_LIB_H

#include<stdio.h>
void printFunc();

#endif

2.外部库源文件

testlib.c

c 复制代码
#include "testlib.h"

void printFunc()
{
	printf("this is printFunc test\n");
}

3.外部库文件

生成库文件的方法,请参考本专栏文章《CMakeLists.txt语法(三)》。

动态库文件testlib.so和静态库文件testlib.a存放目录:/usr/local/testLIB/lib

三.构建工程

1.工程目录下的CMakeLists.txt

c 复制代码
PROJECT(uselib)
ADD_SUBDIRECTORY(src bin)

2.子目录下的文件

(1)CMakeLists.txt

  • 调用动态库
c 复制代码
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.so)
  • 调用静态库
c 复制代码
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.a)

(2)main.c

c 复制代码
#include "testlib.h"

void main()
{
	printFunc();
	printf("this is use library demo\n");
}

3.外部编译

进入build目录后,执行

c 复制代码
cmake ..
make

4.运行编译后的可执行文件

5.查看可执行文件依赖的动态库

c 复制代码
ldd ./uselib

四.语法

1.INCLUDE_DIRECTORIES

  • 语法:INCLUDE_DIRECTORIES( dir1 dir2 ...)
  • 功能:向工程添加多个头文件搜索路径,路径之间用空格分开
  • 语法:LINK_DIRECTORIES(directory1 directory2 ...)
  • 功能:添加非标准的共享库搜索路径
  • 语法:TARGET_LINK_LIBRARIES(target library1 library2...)
  • 功能:为target添加需要链接的共享库
相关推荐
圆周率智能 iMLite AI1 天前
嵌入式高尔夫地图如何压到单洞 100KB?离线图源的数据组织与压缩思路
mcu·边缘计算·嵌入式开发·rtos·离线地图·高尔夫·高尔夫地图
Tronlong创龙3 天前
IoTGateway可以让网关开发速度快一倍?
arm开发·嵌入式开发·硬件开发·工业控制·工业开发板
捷瑞电子工坊10 天前
STM32F4的浮点运算单元(FPU)详解:让单片机告别“软算浮点”
cortex-m4·嵌入式开发·cmsis-dsp·stm32f4·fpu·浮点运算单元·硬件浮点
@嵌入式扫地僧13 天前
ECC 编程智能体嵌入式适配实战:ESP32/RK3588 驱动开发提效 60%+ 指南
驱动开发·嵌入式开发·代码优化·ai辅助开发·编程智能体
水水不水啊14 天前
告别杂乱的调试窗口:我用 Python + WebView 写了一个现代化串口助手
python·测试工具·嵌入式·嵌入式开发·串口调试·串口助手
SL-staff20 天前
MQTT Topic权限越界排查指南:JVS-IOT中系统Topic与自定义Topic的鉴权机制与实操验证
mqtt·嵌入式开发·权限控制·物联网开发·协议分析·鉴权机制·jvs-iot
星野云联AIoT技术洞察21 天前
核心板、底板、开发板有什么区别:Rockchip 项目如何选择采购方式
开发板·嵌入式开发·rockchip·核心板·芯片选型·底板
WWJA王文举21 天前
Bootloader、App 和升级分区之间是什么关系?
stm32·freertos·嵌入式开发·在线升级
玄芯散人22 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
俊基科技25 天前
喇叭贴脸1cm、音量95dB,回音照样消干净——A-29P 全解析
嵌入式开发·硬件开发·ai降噪·回声消除·拾音降噪