cmake创建库和使用库工程示例(多个cmakelists)

本文档详细介绍了如何使用CMake构建一个包含两个静态库(liaadd.a和liabmul.a)的工程,并生成一个引用这两个库的可执行文件(test)。首先定义了工程结构和编译规则,然后分别在子目录中创建静态库和可执行文件的CMakeLists.txt。通过ADD_SUBDIRECTORY指令管理子目录的编译顺序,确保先生成库再生成可执行文件。最后,在工程根目录下运行cmake和make命令来构建和执行程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用cmake构建一个工程,该工程创建了两个静态库,另外生成一个引用该两个静态库的可执行文件。
gitee链接:https://gitee.com/herohl/mycode.git

1.构建工程

在这里插入图片描述
该工程生成两个库liaadd.a和liabmul.a。一个工程管理的cmake,一个生成lib的cmake,一个生成可执行测试程序的cmake。

文件:add.h

int add(int a, int b);

文件:add.c

#include "add.h"

int add(int a, int b)
{
	return a + b;
}

文件:mul.h

int mul(int a, int b);

文件:mul.c

#include "mul.h"

int mul(int a, int b)
{
	return a * b;
}

文件:main.c

#include "add.h"
#include "mul.h"
#include <stdio.h>

int main()
{
	printf("3 + 5 = %d\n", add(3, 5));
	printf("3 * 5 = %d\n", mul(3, 5));
	return 0;
}

2.构建编译规则

首先我们要管理整个工程,告诉他目录在哪里,生成库在哪里,生成可执行文件在哪里…然后要去找到子目录在哪里去子目录再找cmake继续编译子目录的库和可执行文件。并且先生成库,再生成可执行文件(可执行文件依赖与这两个库)

根目录CMakeLists.txt(管理整个工程)

cmake_minimum_required (VERSION 2.8)					# cmake版本最低要求
project (test)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)			# 设置了Debug版本和Release版本可执行文件的输出目录
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)			# 设置可执行文件的输出目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)			# 设置库文件的输出目录

include_directories (${PROJECT_SOURCE_DIR}/inc)				# 附加头文件目录

ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/libsrc)				# 先执行这个目录下的cmake
ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src)					# 上个目录下生成库后,此时再链接生成可执行文件

ADD_SUBDIRECTORY就是可以找到子目录,执行子目录的cmake

子目录生成静态库的CMakeLists.txt

add_library(add STATIC ${PROJECT_SOURCE_DIR}/libsrc/add.c)
add_library(mul STATIC ${PROJECT_SOURCE_DIR}/libsrc/mul.c)

子目录引用静态库生成可执行文件的CMakeLists.txt

aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC_LIST)		# 设置./src为源文件路径

add_executable (test ${SRC_LIST})						# 寻找源文件进行编译
target_link_libraries(test 
	${PROJECT_SOURCE_DIR}/lib/libadd.a 
	${PROJECT_SOURCE_DIR}/lib/libmul.a)						# 编译时需要链接的库

3.测试

在这里插入图片描述

在工程的根目录下创建构建目录并进入

mkdir build && cd build

构建makefile

cmake ..

在这里插入图片描述
编译 make
在这里插入图片描述
进入指定的可执行文件生成目录 project/bin 执行

cd ../bin
./test

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值