04 SCons 常用编译方法
创始人
2025-05-30 18:38:37
0

hello.c

int

main(void)

{

printf("hello,world\n");

}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Sconstruct 文件

Sconstruct文件是一个python脚本文件,但它和python脚本有不同的地方。

1.此文件使用的构造方法执行的工作并不是按照我们排放的顺序去执行,我们只管告诉构造方法我们要做什么,具体如何执行,何时执行由scons编译器自己去决定。

所以我们写的构造方法的顺序可以随便放置

下面是常用的构造方法

# 编译hello.c,生成默认名字的可执行文件,以第一个.c文件命名的可执行文件

# 推荐第二种方式,即使是一个文件我们也写成列表形式

Program('hello.c')或Program(['hello.c'])

#指定输出可执行文件的名字为new_hello

Program('new_hello','hello.c')

#源文件有多个情况,使用 list[] 指定输出可执行文件名字为program

Program('program', ['prog.c' , 'file1.c' , 'file2.c'])

#使用Glob函数来匹配源文件

Program('program', Glob('*.c'))

#便于阅读的方式Split('')

Program('program',Split('main.cfile1.c file2.c'))

#便于阅读的方式单独定义src_files

src_files= Split('main.c file1.c file2.c')

Program('program',src_files)

#便于阅读另一种方式

src_files = Split("""main.c

file1.c

file2.c""")

Program('program', src_files)

#使用关键字参数,参数位置可以不分顺序

src_files = Split('main.c file1.c file2.c')

Program(target='program' , source=src_files)

#使用同一个Sconstruct 文件编译多个可执行程序

Program('foo.c')

Program('bar',['bar1.c' , 'bar2.c'])

#多个程序共享源代码

#一种方式是:可以将共享的源代码编译成库的方式

#下面方式是:把相同源代码都包含到多个程序的Program构造方法中

#编译器自动识别到相同源代码的目标文件后,不会再重新编译相同的源码

Program(Split('foo.ccommon1.c common2.c'))

Program('bar', Split(' bar1 bar2 common1.c common2.c'))

# 编译hello.c,生成目标文件

Object('hello.c')

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

终端执行(cmd或shell)

scons : 编译

scons -c:清除

scons -Q:编译并输出更少的信息,比如编译的过程明细信息输出可以关闭

相关内容

热门资讯

HCIP-6.0DHCP协议原... HCIP-6.0DHCP协议原理与配置1、DHCP的应用场景2、DHCP的基本原理2.1、DHCP协...
《计算机算法设计与分析》课后练... Author:龙箬 Computer Application Technology Change t...
JavaScript 异步队列... 异步队列很多面试的时候会问一个问题,就是怎么让异步函数可以顺序执行。方法有很多...
两度破解全球顶级密码算法,中国... 现代密码是保障网络安全和信息安全的核心技术,从关乎国家安全的重大基础设施,到大家生活必需的银行卡、手...
皇马“逐客令”或变“留人计”?... 足坛风云变幻,当银河战舰皇家马德里的未来规划与巴西新星罗德里戈的个人命运诡异地交织在一起,这位曾经的...
《新场景样本挖掘和适应》 前言;工作中时不时就会有需求,新介质需要添加,或者要另起一...
“马斯克担忧:我们是第一,但第... 【文/观察者网 阮佳琪】 当地时间5月30日,美媒彭博社发文称,“中国初创企业正竞相主导未来人工智...
MySQL架构 架构介绍 1.连接层 使用mysql。首先要与他进行连接,连接层主要完成一些类似建立连...
C++ 10 类与对象(继承) 一、继承简介 ① 继承是面向对象的三大特性之一。 ② 定义类时,下级别的成员除了拥有上...
Opengl ES之文字渲染 前言 自此已是我关于Opengl ES系列入门教程的第16篇文章了,虽然写的不咋的,文章产出量也不高...