测试代码
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:编译并输出更少的信息,比如编译的过程明细信息输出可以关闭