热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

今天在linux上进行了比较复杂的编译和测试。先描述一下我比较失败的编译经验,希望能把刚才繁琐的动作的动作描述清楚。情景重复:1.cpp---->lib1.so2.cp

今天在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的相对路径等问题。

二·

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



 


推荐阅读
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 本文探讨了 Linux 系统中的 Shell 架构及其如何处理环境变量,同时详细介绍了 Source 命令的作用和应用场景。 ... [详细]
  • 本文详细介绍了Java中的注解功能,包括如何定义注解类型、设置注解的应用范围及生命周期,并通过具体示例展示了如何利用反射机制访问注解信息。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 本文详细介绍了Linux内核中misc设备驱动框架的实现原理及应用方法,包括misc设备的基本概念、驱动框架的初始化过程、数据结构分析以及设备的注册与注销流程。 ... [详细]
  • 深入理解动态链接库及其应用
    本文将探讨动态链接库的基本概念,包括Windows下的动态链接库(DLL)和Linux下的共享库(Shared Library),并详细介绍如何在Linux环境中创建和使用这些库。 ... [详细]
  • 随着技术社区的发展,越来越多的技术爱好者选择通过撰写博客来分享自己的学习经验和项目进展。本文将介绍一个具体案例,即将一套原本运行于Windows平台的代码成功移植到Linux(Redhat)环境下的过程与挑战。 ... [详细]
  • 本文详细介绍了在Linux环境下如何有效地管理任务,包括撤销操作、挂起与恢复任务、终止后台程序以及取消定时任务的方法。这些技巧对于提高日常工作效率和系统维护至关重要。 ... [详细]
  • C语言实现推箱子游戏的完整代码
    本文详细介绍了如何使用C语言在Linux环境下实现一个简单的推箱子游戏,包括游戏的基本规则、地图设计及代码实现。适合C语言初学者学习。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • OBS (Open Broadcaster Software) 架构解析
    本文介绍 OBS(Open Broadcaster Software),一款专为直播设计的开源软件。文章将详细探讨其技术架构、核心组件及其开发环境要求。 ... [详细]
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 初探Java编程:从入门到实践
    本文旨在为初学者提供Java编程的基础知识,涵盖程序、算法、流程图的概念,以及JDK环境的配置和Eclipse的使用方法。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
author-avatar
BELLICOSE牛仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有