当前位置: 首页 > news >正文

[置顶] 养成良好的编程习惯-一个库一个文件夹

今天在linux上进行了比较复杂的编译和测试。

先描述一下我比较失败的编译经验,希望能把刚才繁琐的动作的动作描述清楚。


情景重复:

1.cpp ----> lib1.so

2.cpp ----> lib2.so

3.cpp ----> exe


好啦,我介绍下项目环境。

cpp文件:

source/bak(这个下面是:1.cpp.bak, 2.cpp.bak, 3.cpp.bak

 

source/*.cpp

工程:

 

 

project/bak(这个下面是:Makfile1,Makfile2, Makfile3)

project/Makefile

 


现在进入我繁琐的事情了:

为了编译 lib1.so,我做了一下几个动作:

①rm project目录下的所有的Makefile文件

②从project/bak中拷贝Makfile1到project目录,并改为Makefile。

③rm source目录下的所有的.cpp文件

④从source/bak中拷贝1.cpp.bak到source目录,并改为1.cpp。

当然,如果编译一次,这个当然不是问题。但是,如果,你需要编译几十次,这些多余的脑力会成为你找到真理的障碍。(找到真相本来就很艰难,表增加额外的险阻)


还好,今天头脑还比较清醒,还是挺过去了。


下午,我是这样做的:

cpp文件:

 

source/1/1.cpp

source/2/2.cpp

source/3/3.cpp

工程:

project/1/Makefile

project/2/Makefile

project/3/Makefile


现在要好很多了。是吧。


我在这里记下微不足道的事情,但是,我觉得很重要。

一·

减少你查bug时的痛苦,把精力放在刀刃上。

二·

让你的查错误变得有迹可循,不会覆盖掉以前的测试程序。


阻碍你做这样的事情的原因:

一·

比如,你需要额外的知识,比如Makefile的相对路径等问题。

二·

麻烦。你可能觉得现在既有的东西能够解决问题,为什么要引入新的东东。其实,最重要的是,你怕改变。



 

相关文章:

  • 插件之注册插件和注册插件中的模块
  • Java安全编码标准
  • csharp Remove Empty rows in datatable
  • 学习笔记:7种结构型设计模式简单对比
  • 【云周刊】第201期:云栖专辑 | 阿里开发者们的第10个感悟:产品经理最优秀的能力,是框架思维,脑海中有蓝图...
  • 前端导出xls
  • Cannot connect to the Docker datemon at tcp://0.0.0.0:2375 is the docker daemon runing?
  • uoj#36. 【清华集训2014】玛里苟斯(线性基+概率期望)
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • connect 简介
  • 山寨版中国人
  • WP7有约(二):课后作业
  • Authentication error: Unable to respond to any of these challenges
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • 一文带你快速读懂.NET CLI
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Facebook AccountKit 接入的坑点
  • Java IO学习笔记一
  • JavaScript服务器推送技术之 WebSocket
  • JavaScript学习总结——原型
  • Laravel 中的一个后期静态绑定
  • Python利用正则抓取网页内容保存到本地
  • spring boot 整合mybatis 无法输出sql的问题
  • v-if和v-for连用出现的问题
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 聊聊redis的数据结构的应用
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • Hibernate主键生成策略及选择
  • puppet连载22:define用法
  • Spring Batch JSON 支持
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #{}和${}的区别是什么 -- java面试
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Python第六天)文件处理
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET : 在VS2008中计算代码度量值
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net Stream篇(六)
  • .NET 反射 Reflect
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 的字符串暂存池
  • .NET运行机制
  • ??在JSP中,java和JavaScript如何交互?
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)