1393|16

5143

帖子

3

TA的资源

版主

 

Scons 学习之一 [复制链接]

 
 

在好的机器上用MDK编译工程,感觉还好,但是在我的老电脑上用MDK编译,那是真的难等。用了Scons+VScode之后,感觉这工具那是相当的好用。但是用的工具是人家写好的,这里准备学习Scons。

 

Scons是make的升级产品,它做的事情跟make一样,但更简单,更容易。

Scons是一个开放源码,以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile。并且scons是跨平台的,只要scons脚本写的好,可以在linux和Windows以及macos下随意编译。

Scons的设计目的就是让开发人员更容易,更可靠和更快速的建造软件。

与传统的make工具比较,SCons具有以下优点:

  • 使用Python脚本做为配置文件
  • 对于C,C++和Fortran,内建支持可靠自动依赖分析,不用像make工具那样需要执行“make depends“和“make clean”就可以获得所有的依赖关系。
  • 内建支持C,C++,D,Java,Fortran,Yacc,Lex,Qt,SWIG以及Tex/Latex。用户还可以根据自己的需要进行扩展以获得对需要编程语言的支持。
  • 支持make -j 风格的并行建造。相比make -j ,SCons可以同时运行N个工作,而不用担心代码的层次结构。
  • 使用Autoconf风格查找头件,函数库,函数和类型定义。
  • 良好的跨平台性。SCons可以运行在Linux,AIX,BSD,HP/UX,IRIX,Solaris,Windows,Mac OS X和 OX/2上。

 

最新回复

Scons用的人不多吧,相比较现在还是cmake主流一些。   详情 回复 发表于 2023-4-28 15:40
 
 
 

回复

5143

帖子

3

TA的资源

版主

 

Scons使用

安装

在SCons的官方网站上可以查到每个平台的具体安装方法。

Win平台下的下载和安装,可以一路NEXT。

Linux下下载tar包,执行以下命令即可:

tar -zxf scons-2.0.1.tar.gz
cd scons-2.0.1
sudo python3 setup.py install

对于Linux来说,scons会默认安装到/usr/local/bin目录下,而在Windows平台上,则会被安装到Python3\Script目录下。

 
 
 

回复

5143

帖子

3

TA的资源

版主

 

使用

这里通过一个简单的示例来说明。

一个hello.c源文件,一个SConsturct文件

hello.c:

#include <stdio.h>

int main(void)
{
        printf("hello,scons!\n");

        return 0;

}

SConstruct

Program("hello.c")

运行Scons,得到结果如下:

liujianhuadeiMac:myscons liujianhua$ cat SConstruct 
Program("hello.c")
liujianhuadeiMac:myscons liujianhua$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o hello.o -c hello.c
gcc -o hello hello.o
scons: done building targets.
liujianhuadeiMac:myscons liujianhua$ ./hello 
hello,scons!
liujianhuadeiMac:myscons liujianhua$ ls
SConstruct	hello		hello.c		hello.o
liujianhuadeiMac:myscons liujianhua$ 

在上面的运行结果里面我们看到,程序的编译与make没有什么两样,同样的操作,只是把scons换成make,SConstruct换成Makefile。Scons相比Makefile简单很多。

Sconstruct以Python脚本的语法编写,你可以像编写Python肚子本一样来编写他。其中的Program是编译的类弄,说明你准备想建一个可执行的二进制程序,它由hello.c文件来生成。

在这里,没有指定生成的可扩行程序的名字,SCons会把源代码文件名字的后缀去掉,用来作为可执行文件的名字。

我们甚至不需要像Makefile那样指定清理的动作,就可以扩行清理任务。在SCons中,执行清理任务由参数-c指定,如下:

liujianhuadeiMac:myscons liujianhua$ scons -c
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
Removed hello.o
Removed hello
scons: done cleaning targets.
liujianhuadeiMac:myscons liujianhua$ ls
SConstruct	hello.c
liujianhuadeiMac:myscons liujianhua$ 

 

 
 
 

回复

5078

帖子

4

TA的资源

版主

 

好东西。楼主用好了多介绍介绍。

点评

多谢关注,正在努力学习中,争取以后编辑器与编译器分离,这样自由度就好,现在整个编译环境那是相当的累。  详情 回复 发表于 2023-4-20 10:33
 
 
 

回复

5143

帖子

3

TA的资源

版主

 
damiaa 发表于 2023-4-20 10:00 好东西。楼主用好了多介绍介绍。

多谢关注,正在努力学习中,争取以后编辑器与编译器分离,这样自由度就好,现在整个编译环境那是相当的累。

 
 
 

回复

1028

帖子

24

TA的资源

纯净的硅(高级)

 

感觉太麻烦了,简单的项目批处理调用就行了。

点评

我感觉这个挺好的,特别是处理大工程时。  详情 回复 发表于 2023-4-20 15:41
 
 
 

回复

4664

帖子

0

TA的资源

版主

 

scons工具是专门为C工程设计的编译工具吧?

点评

C++也支持吧,可以用的范围很多。  详情 回复 发表于 2023-4-20 15:42
 
 
 

回复

3718

帖子

2

TA的资源

版主

 

VScode挺好用的,这个软件相对来说小很多      

点评

vscode+scons,那才是绝配吧。  详情 回复 发表于 2023-4-20 15:42
 
 
 

回复

5143

帖子

3

TA的资源

版主

 
fxyc87 发表于 2023-4-20 14:30 感觉太麻烦了,简单的项目批处理调用就行了。

我感觉这个挺好的,特别是处理大工程时。

 
 
 

回复

5143

帖子

3

TA的资源

版主

 
wangerxian 发表于 2023-4-20 14:33 scons工具是专门为C工程设计的编译工具吧?

C++也支持吧,可以用的范围很多。

点评

对,C++/C编译工具,毕竟是一家人。  详情 回复 发表于 2023-4-20 16:30
 
 
 

回复

5143

帖子

3

TA的资源

版主

 
秦天qintian0303 发表于 2023-4-20 15:11 VScode挺好用的,这个软件相对来说小很多      

vscode+scons,那才是绝配吧。

点评

scons都支持什么编译啊?      详情 回复 发表于 2023-4-21 08:39
 
 
 

回复

4664

帖子

0

TA的资源

版主

 
lugl4313820 发表于 2023-4-20 15:42 C++也支持吧,可以用的范围很多。

对,C++/C编译工具,毕竟是一家人。

 
 
 

回复

4589

帖子

4

TA的资源

版主

 

SCons听好的,可以在多个平台上运行,包括Windows、Linux、Mac OS等。

 
 
 

回复

3718

帖子

2

TA的资源

版主

 
lugl4313820 发表于 2023-4-20 15:42 vscode+scons,那才是绝配吧。

scons都支持什么编译啊?    

点评

make 能支持的它都能支持,他就是用python写了一个脚本,去调用make,比较智能一些。  详情 回复 发表于 2023-4-21 08:48
 
 
 

回复

5143

帖子

3

TA的资源

版主

 
秦天qintian0303 发表于 2023-4-21 08:39 scons都支持什么编译啊?    

make 能支持的它都能支持,他就是用python写了一个脚本,去调用make,比较智能一些。

 
 
 

回复

6580

帖子

2

TA的资源

五彩晶圆(中级)

 

Scons用的人不多吧,相比较现在还是cmake主流一些。

点评

RT-Thread是用这个。最近学习rtthread,所以学习一下,相比cmake要简单一些。  详情 回复 发表于 2023-4-28 16:37
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

5143

帖子

3

TA的资源

版主

 
freebsder 发表于 2023-4-28 15:40 Scons用的人不多吧,相比较现在还是cmake主流一些。

RT-Thread是用这个。最近学习rtthread,所以学习一下,相比cmake要简单一些。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表