03 SCons 自动构建工具编译hello.c

文章介绍了如何配置MINGW的临时环境变量以避免冲突,通过创建bat脚本来简化过程,并提到使用ConEmu作为终端管理工具。作者还展示了如何设置SCons的构建规则,编写C++的HelloWorld程序,并使用SCons进行编译和运行。

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

  1. 安装mingw 我的电脑已经安装过,下面主要说下配置环境

  1. 我们将mingw的路径和scons的虚拟环境路径添加到临时的环境变量,这样做的好处是使用的时候添加,不与其它版本的全局的环境变量冲突。后期我编译ARM程序时把gcc临时环境变量改为arm-gcc路径即可。

  1. 写一个bat脚本c_c++_env.bat,内容如下

@echo on
@echo run in cmd.exe
@echo off

@echo display current path:
@set current_path=%~dp0
@echo %current_path%
set path=e:\tools\miniconda3\envs\embed;E:\Qt\Tools\CMake_64\bin;E:\Qt\Tools\Ninja;E:\Qt\Tools\mingw1120_64\bin
@echo

因为我安装过QTE6,它的构造环境是cmake+Ninja,编译环境是mingw。我把这些全部设置成我的临时环境变量。

暂时我们不讲cmake+Ninja,我的scons构造工具安装到虚拟环境embed,所以我把他的路径也设置为临时环境变量。

  1. 把这个bat批处理文件在cmd.exe里运行。

我这里推荐一个终端管理工具ConEmu,它可以管理多个终端如下图

具体 ConEmu的使用请网络搜索。

  1. 把c_c++_env.bat 设置成在ConEmu中启动

  1. 启动 C_C++_env终端

  1. 在终端中检查各工具是否安装正常

  1. 编写一个helloworld代码 hello.c

#include <stdio.h>
void main(void)
{
    printf("hello,world\r\n");
}
  1. 使用gcc直接简单编译

gcc hello.c //编译
a.exe      //运行

输出 hello,world
  1. 使用SCons构建hello.c编译规则

在hello.c同目录下创建文件 SConstruct ,注意:没有后缀。

SConstruct文件内容如下:

Program('hello.c')
  1. 在终端执行 命令

scons

执行hello.exe

到目前为止,一个最简单的scons构造规则完全结束。

代码编辑器我使用Visual Code 我只使用它的编辑功能,编译在终端中执行scons

总结一下:

  1. 安装gcc 环境,设置临时环境变量

  1. 安装scons环境,设置scons临时环境变量

  1. 编写hello.c源代码

  1. 编写 SConstruct 构造器文件 调用 Program('hello.c'),指定要编译的源代码文件

  1. 执行scons

  1. 运行hello.exe 查看结果

scons是一个基于Python的构建工具,使用起来非常灵活和强大。以下是一个使用scons编译C++项目的简单例子: 1. 首先,确保你已经安装了scons。你可以使用pip来安装: ``` pip install scons ``` 2. 创建一个名为SConstruct的文件,这是scons的主构建脚本: ```python # SConstruct # 设置编译器 env = Environment(CXX='g++', CC='gcc') # 添加编译选项 env.Append(CXXFLAGS=['-std=c++11', '-Wall']) # 设置源文件 sources = ['main.cpp', 'hello.cpp'] # 设置目标文件 objects = env.Object(sources) # 设置可执行文件 env.Program(target='hello', source=objects) ``` 3. 创建一个简单的C++程序,包含以下文件: - main.cpp ```cpp #include <iostream> #include "hello.h" int main() { hello(); return 0; } ``` - hello.h ```cpp #ifndef HELLO_H #define HELLO_H void hello(); #endif // HELLO_H ``` - hello.cpp ```cpp #include <iostream> #include "hello.h" void hello() { std::cout << "Hello, World!" << std::endl; } ``` 4. 在命令行中运行scons: ``` scons ``` 这将会编译你的项目并生成一个名为hello的可执行文件。 5. 运行生成的可执行文件: ``` ./hello ``` 你应该会看到输出: ``` Hello, World! ``` 这个例子展示了scons的一些基本功能: - 设置编译器 - 添加编译选项 - 指定源文件 - 生成目标文件 - 链接生成可执行文件 scons的优势在于它的Python基础,使得构建脚本更加灵活和强大。你可以根据需要添加更多的功能,比如条件编译、生成库文件、处理依赖关系等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搏哥聊技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值