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添加需要链接的共享库
相关推荐
Nerd Nirvana1 个月前
C++编程——异步处理、事件驱动编程和策略模式
开发语言·c++·策略模式·嵌入式开发·事件驱动·异步处理
Industio_触觉智能1 个月前
瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略
ffmpeg·开发板·嵌入式开发·瑞芯微·视频解码·rk3576·rk3576j
IT永勇1 个月前
STM32高级定时器-输出比较模式
stm32·单片机·嵌入式开发·pwm输出·高级定时器
烟花的学习笔记1 个月前
【科普向-第三篇】汽车电子MCU操作系统详解:CP AUTOSAR与FreeRTOS
操作系统·freertos·autosar·嵌入式开发·汽车电子·cp autosar
Tronlong创龙2 个月前
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例
开发板·嵌入式开发·硬件开发·工业控制
riveting2 个月前
明远智睿SSD2351:以技术突破重构嵌入式市场格局
大数据·人工智能·重构·边缘计算·嵌入式开发·智能交通
chenchao_shenzhen2 个月前
RK3568嵌入式音视频硬件编解码4K 60帧 rkmpp FFmpeg7.1 音视频开发
ffmpeg·音视频·rk3588·音视频开发·嵌入式开发·瑞芯微rk3568·硬件编解码
riveting2 个月前
明远智睿T113-i核心板:工业设备制造领域的革新利器
边缘计算·制造·嵌入式开发·工业控制·医疗器械·智能交通
IT永勇2 个月前
STM32-基本定时器
stm32·单片机·嵌入式开发·基本定时器