CMake - 创建静态库

作者:编程家 分类: c++ 时间:2025-07-29

使用CMake创建静态库

CMake是一个跨平台的开源构建工具,可以自动生成与平台无关的构建文件,使项目的构建过程更加简单和可维护。在本文中,我们将介绍如何使用CMake创建静态库,并提供一个案例代码来演示。

什么是静态库?

静态库是一组预编译的对象文件的集合,它们被链接到一个可执行文件中。与动态库相比,静态库将所有的代码和依赖项都打包在一个可执行文件中,使得可执行文件可以在没有其他依赖的情况下独立运行。

使用CMake创建静态库的步骤

1. 创建一个新的文件夹,作为项目的根目录。

2. 在项目的根目录中创建一个CMakeLists.txt文件,该文件将包含项目的构建指令。

3. 在CMakeLists.txt文件中,使用add_library命令来定义一个静态库。例如,add_library(mylib STATIC src/mylib.cpp)将创建一个名为mylib的静态库,并将源文件src/mylib.cpp添加到库中。

4. 如果库有其他依赖项,可以使用target_link_libraries命令来链接这些依赖项。例如,target_link_libraries(mylib otherlib)将静态库mylib链接到名为otherlib的其他库。

5. 在CMakeLists.txt文件中,使用install命令来指定库的安装路径。例如,install(TARGETS mylib DESTINATION lib)将库mylib安装到lib目录下。

案例代码

假设我们的项目是一个简单的数学库,其中包含一些常见的数学函数。我们将创建一个名为mathlib的静态库,并添加一些基本的数学函数如加法、减法和乘法。

下面是我们的CMakeLists.txt文件的内容:

cmake_minimum_required(VERSION 3.10)

project(mathlib)

set(CMAKE_CXX_STANDARD 11)

# 添加源文件

add_library(mathlib STATIC src/addition.cpp src/subtraction.cpp src/multiplication.cpp)

# 添加安装目标

install(TARGETS mathlib DESTINATION lib)

在上面的代码中,我们将源文件addition.cpp、subtraction.cpp和multiplication.cpp添加到mathlib库中。这些文件包含了对应的加法、减法和乘法函数的定义。

我们可以在项目中的其他文件中使用这些函数,只需包含mathlib的头文件,并链接到mathlib库即可。以下是一个简单的示例代码:

cpp

#include

#include "mathlib/addition.h"

#include "mathlib/subtraction.h"

#include "mathlib/multiplication.h"

int main() {

int a = 5;

int b = 3;

std::cout << "Addition: " << addition(a, b) << std::endl;

std::cout << "Subtraction: " << subtraction(a, b) << std::endl;

std::cout << "Multiplication: " << multiplication(a, b) << std::endl;

return 0;

}

在上面的代码中,我们包含了mathlib的头文件,并使用addition、subtraction和multiplication函数来执行相应的数学运算。

使用CMake可以轻松地创建静态库,并将其集成到项目中。通过将所有的代码和依赖项打包在一个可执行文件中,静态库使得项目更加独立和可移植。在本文中,我们提供了一个使用CMake创建静态库的示例代码,并介绍了相应的步骤和命令。

希望这篇文章对你理解如何使用CMake创建静态库有所帮助!