大家好,我是阿尔法!
说到构建工具,我们比较熟悉的是 Make、CMake 等,而 SCons 是一款开源的、由 Python 实现的自动化构建工具,开发者可以直接利用 Python 的强大功能和丰富库来管理复杂的构建逻辑,让构建过程变得更加高效。
相比于 Make、CMake,SCons 基于 Python 驱动,一步构建,逻辑灵活,过程简单,具备自动依赖分析等,可实现真正的跨平台。
安装 SCons
-
实验环境:Ubuntu 24.04
-
SCons 依赖 Python,Ubuntu 24.04 默认安装了 Python 3.12,满足安装使用 SCons 的环境要求,故直接安装 SCons 即可:

-
打开终端,输入 SCons 安装命令:
sudo apt install scons

- 通过查看程序版本的方式来验证 SCons 是否安装成功:

创建测试项目
-
创建一个简单的测试项目,项目结构如下:
scons/
├── inc/
│ └── helloworld.h
├── src/
│ ├── helloworld.c
│ └── main.c
└── SConstruct

- 该测试项目仅仅为实现一个打印 hello world 的功能,相关源文件内容如下:
c
// helloworld.h
void helloworld(void);
// helloworld.c
#include <stdio.h>
void helloworld(void)
{
printf("hello world! \r\n");
}
// main.c
#include "helloworld.h"
int main(void)
{
helloworld();
return 0;
}

-
编写一个简单的 SConstruct 脚本,该脚本在 Scons 构建中用来配置编译属性等,文件内容如下:
创建构建环境
env = Environment()
设置编译选项
env.Append(CCFLAGS=["-g", "-Wall"])
指定头文件路径
env.Append(CPPPATH=["inc"])
定义源文件列表
src_files = ["src/helloworld.c", "src/main.c"]
构建可执行文件
program = env.Program(target="test", source=src_files)
设置默认构建目标
Default(program)

构建测试
- 输入
scons即可构建可执行程序:

- 输入
scons -c用来清除编译文件:

- 通过并行构建方式可加快构建速度,如使用 4 个并行任务,输入
scons -j4:

未完待续...