SCons命令 之 从入门到精通

(2005-12-05 11:41:13)

转载
标签:

杂谈

分类:计算机与 Internet
sconstruct是执行Scons的脚本文件,是Python脚本。
c:>scons执行sconstruct中脚本
Build command insconstruct:
1.Program('hello.c') 编译hello.c可执行文件,根据系统自动生成(hello.exe on Windows; hello onPOSIX)
  Program('new_hello','hello.c')指定Output文件名(new_hello.exe on Windows; new_hello onPOSIX)
  Program(['main.c', 'file1.c','file2.c']) 编译多个文件,Output文件名以第一个文件命名(main.exe;main)
  Program('program', Split('main.c file1.c file2.c'))
2.Object('hello.c')编译hello.c目标文件,根据系统自动生成(hello.obj on Windows; hello.o onPOSIX)
3.Library('foo', ['f1.c', 'f2.c','f3.c']) 编译library
  SharedLibrary('foo', ['f1.c','f2.c', 'f3.c']) 编译 static library
  StaticLibrary('foo', ['f1.c','f2.c', 'f3.c']) 编译 shared library

4.Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')连接库,不需加后缀或是前缀
5.判断源文件是否修改
  SourceSignatures('MD5')    根据内容是否改变,默认方式
  SourceSignatures('timestamp') 根据修改时间
6.判断目标文件是否改变
  TargetSignatures('build')  根据编译结果
   TargetSignatures('content') 根据文件内容,如果只是加了句注释,将不会被重新编译
7.Ignore(hello, 'hello.h')  忽略某个依赖关系
8.Depends(hello, 'other_file') 明确依赖关系

 
Executive command in shell
1. scons -c  clean
2. scons -Q 只显示编译信息,去除多余的打印信息
3. scons -Q--implicit-cache hello 保存依赖关系
               --implicit-deps-changed  强制更新依赖关系
              --implicit-deps-unchanged 强制使用原先的依赖关系,即使已经改变
 
Key words:
LIBS
LIBPATH
CCFLAGS
CPPPATH :Program('hello.c', CPPPATH =['include', '/home/project/inc'])
Concept:
1.Node Objects   文件或是目录
   hello_c =File('hello.c')
  Program(hello_c)                File Node Objects
   classes =Dir('classes')
   Java(classes,'src')               Directory Node Objects

xyzzy =Entry('xyzzy')          Either File or Directory Node Objects


1.创建环境变量
   env = Environment()
  env.Program('foo.c')       根据不同系统创建不同的编译环境变量
   也可以改变:
   env = Environment(CC = 'gcc',CCFLAGS ='-O2')
2.复制环境变量
   env = Environment(CC = 'gcc')
   opt = env.Copy(CCFLAGS = '-O2')
    dbg = env.Copy(CCFLAGS = '-g')

3.获取环境变量

   env = Environment()
   print "CC is:",env['CC']
4.扩展环境变量
   env = Environment()
    print "CC is:",env.subst('$CC')
5.替换环境变量
   env = Environment(CCFLAGS ='-DDEFINE1')
    env.Replace(CCFLAGS = '-DDEFINE2')
    env.Program('foo.c')
6.尾部增加环境变量值
   env = Environment(CCFLAGS ='-DMY_VALUE')
    env.Append(CCFLAGS = ' -DLAST')
    env.Program('foo.c')
7.头部添加环境变量值
   env = Environment(CCFLAGS ='-DMY_VALUE')
    env.Prepend(CCFLAGS = '-DFIRST ')
    env.Program('foo.c')
使用
1.看编译命令未展开
Input:
    env = Environment(CCFLAGS ='-DFOO')
     print "CCCOM is:",env['CCCOM']
Output:
    CCCOM is: $CC$CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET$SOURCES

2.看编译命令已展开

Input:
   env = Environment(CCFLAGS = '-DFOO')
    print "CCCOM is:",env.subst('$CCCOM')
Output:
   CCCOM is: gcc -DFOO -c-o

SCons命令 之 从入门到精通相关推荐

  1. Anaconda conda常用命令:从入门到精通

    目录 1. 前言 2. 管理conda自身 2.1 查看conda版本 2.2 查看conda的环境配置 2.4 设置镜像 2.5 更新conda 2.6 更新Anaconda整体 2.7 查询某个命 ...

  2. linux关机_3.5 开关机命令及7个运行级别《LINUX-centos7-操作系统入门到精通》

    常用的几个关机,重启命令. shutdown.init.reboot.poweroff 3.5.1 关机命令之shutdown.init 0 作用:关机,重启,定时关机 命令使用格式:shutdown ...

  3. 《SolidWorks 2017中文版机械设计从入门到精通)》——1.3 常用工具命令

    本节书摘来自异步社区<SolidWorks 2017中文版机械设计从入门到精通>一书中的第1章,第1.3节,作者: 赵罘 , 杨晓晋 , 赵楠 更多章节内容可以访问云栖社区"异步 ...

  4. 《SolidWorks 2014中文版机械设计从入门到精通》——2.2 草图命令

    本节书摘来自异步社区<SolidWorks 2014中文版机械设计从入门到精通>一书中的第2章,第2.2节,作者:赵罘 , 杨晓晋 , 刘玥著,更多章节内容可以访问云栖社区"异步 ...

  5. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. 《Linux C编程从入门到精通》——1.4 Linux的常用命令

    本节书摘来自异步社区<Linux C编程从入门到精通>一书中的第1章,第1.4节,作者:宋磊 , 程钢著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 L ...

  7. 《Linux C编程从入门到精通》一1.4 Linux的常用命令

    本节书摘来自异步社区<Linux C编程从入门到精通>一书中的第1章,第1.4节,作者 宋磊 , 程钢,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 Li ...

  8. 《AutoCAD 2013中文版从入门到精通》——2.2 圆类命令

    本节书摘来自异步社区<AutoCAD 2013中文版从入门到精通>一书中的第2章,第2.2节,作者: 李谨 , 康士廷 更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  9. Git版本控制软件结合GitHub从入门到精通常用命令学习手册

    GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以 ...

最新文章

  1. laravel-admin 关闭debug模式导致异常信息到页面的排查
  2. A Multi-task Deep Network for Person Re-identification
  3. el-image中src加载assets路径下图片使用require避免加载不到
  4. TOPAS 命令详解
  5. AtCoder AGC004F Namori (图论)
  6. html写三角形,css3怎么写三角形?
  7. 【Qt】Qt窗口程序
  8. 如何收缩超大的SharePoint_Config数据库
  9. 一分钟在Linux 环境 搭建 SFTP服务器
  10. OSSIM中快速部署HIDS
  11. 计算机课程在线作业,计算机科学与技术作业答案
  12. 【Python网络爬虫】规则#20181023
  13. 分子模拟的理论与实践_基于分子模拟的数据驱动发现流体力学宏观方程
  14. windows鼠标响应相关知识
  15. FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧内宏块(Intra)
  16. 2022.3.27 学习韩顺平老师java基础
  17. 性别年龄论文阅读(3)——VGGFace2
  18. echart vue
  19. C语言常见头文件汇总
  20. 截屏工具、录屏工具不能用?是因为这个!!

热门文章

  1. 什么是时间管理,一个大四学生的简单理解
  2. 2018.8.14笔记
  3. Django入门项目实践(中)
  4. php使用CURL不依赖COOKIEJAR获取COOKIE的方法
  5. 开发:随笔记录之 Json字符串和对象的相互转换
  6. SEO搜索引擎优化排名方法大全
  7. 如何在 ASP.NET 4.6 与 IIS10 中运用 HTTP/2 ?
  8. Python学习入门基础教程(learning Python)--3.2 if-else分支语句
  9. android 汉字转拼音pinyin4j包
  10. NYOJ5056_黑色帽子(水题)