全部学习汇总: GitHub - GreyZhang/g_SCons: A new member in my toolbox, looking forward to replacing make tool later.

在使用Makefile的时候,生成可执行文件、二进制文件与生成目标文件其实在语法上没有太大的差异,都是要生成target。不同点在于规则的执行有差异,毕竟调用的不同命令甚至是不同的工具。

在SCons中,target这样的理念被换了一种叫法以及形式,感觉上这个工具管理构建过程的时候更加专注于子过程了。而且,即使是官方的手册,看起来也把目标文件的生成独立成了单独的小章节。

这样,根据上面的例子来复现构建一下这个过程。采用的hello.c是之前的测试中用过的,内容也简单,不再列述。

创建配置文件SConstruct,并写上上面的内容。运行scons,效果如下:

这安阳,可以看出运行的效果,跟上面的提示不同的地方在于默认的编译器是不同的。其实,在运行的过程中还生成了一个dblite文件,看名称应该是一个数据库文件。可以列出隐藏文件看到:

关于编译环境的搭建,之前我也考虑过采用数据库来替代掉Makefile的方式,印象中写入过自己的博客笔记。

值得注意的是,这一次的运行结果中并没有可执行文件生成。根据文档,在不同的平台上使用不同的编译器工具可能会有不同的效果,一般用来说明Windows平台的时候使用的编译器都是VS。在我自己接触的工作项目中,VS用得少,更多还是类似POSIX的这种用法。

文档中的两个关键词我涂黄了,这里提到了一个builder的概念,更准确说应该是builder method。这次用以生成object文件的Object就是一个典型的代表,以前用的Program应该也是。算是sSCons中的一个术语吧,我觉得可能是这一套工具体系中的一些元操作,后续我需要掌握积累的也就是类似的元素。

顺便补充一个之前没有总结的小知识点,那就是make clean的对等操作。在SCons中对等的操作是scons -c,具体的效果如下:

这个功能在上面简单的配置中就是已经支持的了,比较方便。可以看得出来,在初始的上手过程中scons相比Makefile来说还是有一些简单简洁的优势的。

增补一条知识:前面的编译的截图中看得到scons在执行编译的时候输出了很多提示信息,如何减少这样的信息输出呢?可以执行scons -Q,-Q的参数可以让输出信息减少。

1217_使用SCons生成目标文件相关推荐

  1. 程序员的自我修养--链接、装载与库笔记:目标文件里有什么

    编译器编译源代码后生成的文件叫做目标文件.目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整.其实它本身就是按照可执行文件格式存储的, ...

  2. C语言 目标文件和可执行文件(ELF文件)

    转自:https://www.jianshu.com/p/7c609b70acbd 1.C语言创建程序 1.1C语言创建(分为4个步骤) 编辑 编译 链接 执行 编辑:就是创建和修改C程序的源代码-我 ...

  3. VS2013生成DLL文件

    1.打开VS2013,创建项目,点DLL,输入项目名称,MakeDll,添加新项,来创建头文件MakeDll.h: MakeDll.h #define DLL_API __declspec(dllex ...

  4. 链接装载与库:第三章——目标文件里有什么(ELF文件结构)

    文章目录 一.ELF文件的格式 二.ELF文件是什么样的 三.挖掘SimpleSection.o 3.1 代码段 3.2 数据段和只读数据段 3.3 BSS段 3.4 其他段 3.5 自定义段 四.E ...

  5. Java根据模板生成excel文件【Java】【EasyExcel】【xls】

    Background 前两天客户反应对数据导出的文件格式不太满意,然后给了我们模板,让我们按照模板导出数据.于是一通修改(excel数据量有限制他们也不管,之前我们给的csv格式). Java操作ex ...

  6. 「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件

    文章目录 一.PPT文件格式介绍 1.PPT文件格式的概述 2.HSLF和XSLF的区别 3.如何选择合适的POI类库 二.SlideShow 三.读取PPT文件 1. 加载PPT文件 2. 获取PP ...

  7. 《程序员的自我修养》第3章---目标文件里有什么

    第3章 目标文件里有什么 3.1 目标文件的格式: 编译器编译源代码后生成的文件叫做 "目标文件". 目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程, ...

  8. 使用 ld 命令链接目标文件生成可执行文件

    1.目标文件生链接成可执行文件依赖的库和目标文件 使用 ld 链接目标文件生成可执行文件,用于取代命令 g++,仅仅用于学习 ld 命令的使用,不用于实际的项目编译. 首先看一个简单的 C++ 源文件 ...

  9. Java找不到目标文件,java-构建后生成的目标文件不包含必须已经...

    在构建项目时,控制台显示源包已编译(px10包中的一个) 但是,如果我看到生成的目标文件,则源包中没有任何类. >尝试过清洁建立几次,但无济于事 >从- / var / cache /清除 ...

最新文章

  1. word 转html utf8 在线_pdf转word在线转换器:办公必备工具安利!
  2. CentOS7安装笔记:minio分布式集群搭建
  3. SQL Server 2000从入门到精通3
  4. 6.24AppCan移动开发者大会价值30万的展示机会归了谁?
  5. jq 点击导航添加背景_jq入门(2)css选择符
  6. ip设置 kali 重置_和我一起配置黑客系统kali,带你成为大牛,你真的准备好了吗?...
  7. Android 切换卡(TabWidget)
  8. FreeMarker 语法
  9. java int stack_java stack总结
  10. 建模方法(四)-因子分析定义和应用
  11. 后台 事务SqlTransaction
  12. 最近发现谷歌浏览器打开网页速度很慢,比IE都慢
  13. Utgard连接OPC Server常见故障码及解决方案
  14. 雷军北大15分钟演讲:我至少有胆量去想
  15. vivox21支持html,vivo X21支持快充吗_vivo X21支持无线充电吗-太平洋IT百科
  16. 那些警示良言——韩愈
  17. 【2022年1月1日更新】宝塔+青龙+Nvjdc一对一推送+wskey智能化+管理员推送+Ninja+SaoBing面板+kingfeng+go-cqhttp/qqbot
  18. ThingsBoard 使用
  19. 深入简出 SQL窗口函数
  20. 我对所谓电信运营商重组和3G发牌的看法

热门文章

  1. ffmpeg源码精读1,音视频处理概述
  2. vue使用报错记录(cli4):[vue/valid-v-for] Custom elements in iteration require ‘v-bind:key‘ direc
  3. MAC Nginx配置: open() “xxx/logs/error.log“ failed (2: No such file or direc
  4. 一文搞清楚opengl、openglES、GLEW、的关系GLUT、FreeGLUT、GLFW
  5. 语音处理/语音识别基础(六)- 语音的端点检测(EPD/VAD)
  6. 电影数据分析——国产烂片深度揭秘
  7. 一个高速交警的忠告(转)
  8. 编写python程序按照单利方式计算理财产品收益
  9. 分享48个Go源码,总有一款适合您
  10. 计算机睡眠无法锁屏是怎么设置密码,教你电脑待机锁屏怎么设置