Linux C++轻量级开发指南
作为一名产品开发,一套顺手的集成开发环境必不可少。大多数时候,开发经理将精力投入在产品需求分析上而忽视了研发质量甚至连基本的集成开发环境都没有统一。当然,如果你们的项目仅仅需要部署在单一的环境中或没有跨语言开发需求,通常这样做还不会造成严重问题。可是一旦你需要面对一套相对复杂的系统,异构系统间的通讯等问题。在项目开始阶段,统一各个部分的集成开发环境非常重要。我将通过一系列的文章向你介绍我在企业级开发工作中使用的解决方案。当然,这些都是可能都包含了强烈的个人特色,不见得完全适用于所有的企业,甚至有些观点也值得商榷。只希望能够起到一个抛砖引玉的作用,有兴趣的小伙伴一起探讨。
目前,我所担任的工作主要包含了轻量化的桌面系统,浏览器端以及基于Linux系统的底层通信开发。需要使用的语言包括Java、C++和JavaScript。没有分布式和大数据的需求。需要开发底层通信的原因主要是,我们有大量的数据是直接通过硬件设备来获取,因此这部分的工作主要使用C++来完成,业务层考虑到部署和开发的效率偏重使用Java来实现,前段没有太多的选择JavaScript是不二之选。
首先阐述一下Java和C++这两门语言的开发适应性问题。由于企业和个人定位的缘故,我对这两门主流语言都有一定的开发经验,遇见过各种奇葩需求也实现过各种神奇功能。相对来说,较小的底层功能模块处于运算效率的考量,我会偏向于使用C++来做。而针对业务系统,服务组件或需要超过10人以上的团队来合作开发的项目Java依然是我的唯一选择。无论是企业还是个人开源,你所面对的开发任务更倾向于特定需求而非科研,使用C++作为开发语言,无论你的开发经验多么丰富都势必会陷入语言特性所造成的泥沼中无法自拔。相比较而言,牺牲一些机器性能所换来的是更快的迭代、更少的BUG和更丰富的生态。因此作为一名开发工程师,无论如何不要墨守成规,新技术或新语言可能只需要1行代码就能轻松解决你在5年前需要100行代码才能完成的任务,如果这时你还以前辈自居,那么离被市场淘汰也就不远了。
接下来言归正传,Linux下的C++开发工具很多,有人习惯用vim也有人会使用QtCreator或其他乱七八糟的IDE。而我更推荐使用微软的开发神器Visual Studio Code,与其它的产品相比它足够轻量级也更加灵活。唯一不太方便的是,用它开发基于Qt的产品不合适。不过我在前面已经阐述,界面端使用JavaScript才是更加合理的选择。

安装完成以后,你需要一个C++插件,这里推荐微软的官方版本:

完成以后就可以和你的小伙伴们开心的工作了。那么,如何进行编译和调试呢?其实vsc本身提供了配置文件来完成这些任务。不过我并不推荐你去学习它。我更建议你通过Makefile来完成这项传统工作,因为这样做会使得你的工程具备更广泛的适应性。这也就是为什么,很多人推荐在Linux下使用vim来作为开发工具的原因,不过直接使用vim,开发效率实在太低。
最后介绍一下如何调试。相信如果你在网上搜索Linux vsc debug几个关键字,会跳出很多答案,不过这些都不是我喜欢的。我们使用vsc的初衷是使开发变得高效和简单,任何多余的配置都应该放弃。既然我们已经采用了make和Makefile作为我们的编译工具,只需要将gdb作为编译条件即可获得调试版本。然后我们为vsc增加一个配置文件launch.json,具体生成的方法网上有。然后将“program”对应的值设置为Makefile文件中指定的生成名。
F5即可进行断点调试。

最后提交代码的时候,只需要源码文件和对应的Makefile即可。
Linux C++轻量级开发指南的更多相关文章
- C#在Linux上的开发指南
本人才疏学浅,在此记录自己用C#在Linux上开发的一点经验,写下这篇指南.(给想要在Linux上开发C#程序的朋友提供建议) 目前在Linux上跑的网站:http://douxiubar.com | ...
- C#在Linux上的开发指南(续)
续之前的一篇开发指南http://www.cnblogs.com/RainbowInTheSky/p/5496777.html 部分人在部署的时候经常出现dll兼容问题(其实可以看小蝶惊鸿的文章,蝶神 ...
- [翻译]现代java开发指南 第二部分
现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分 =================== 欢迎来到现代 Java 开发指南第二部分.在第一 ...
- [转帖]2019 简易Web开发指南
2019 简易Web开发指南 2019年即将到来,各位同学2018年辛苦了. 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的技术 ...
- java web轻量级开发面试教程
最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二 ...
- 开源项目SMSS开发指南(二)——基于libevent的线程池
libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- Linux静态库生成指南
Linux静态库生成指南 Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...
随机推荐
- Python 之父的解析器系列之六:给 PEG 语法添加动作
原题 | Adding Actions to a PEG Grammar 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公 ...
- Go第三方日志库logrus
日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发.本文介绍了logrus这个日志库的基本使用. logrus介绍 Logru ...
- 每天学会一点点(重写equals一定要重写hashcode)
package com.example.demo.javaError; import java.util.HashMap; /** * Created by yyy on 2019/01/24. */ ...
- CS中委托与事件的使用-以Winform中跨窗体传值为例
场景 委托(Delegate) 委托是对存有某个方法的引用的一种引用类型变量. 委托特别用于实现事件和回调方法. 声明委托 public delegate int MyDelegate (string ...
- 手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 负载均衡 高可用 集群
为了实现服务的高可用和可扩展,在网上找了几天的资料,现在终于配置完毕,现将心得公布处理,希望对和我一样刚入门的菜鸟能有一些帮助. 一.理论知识(原理) 我们不仅要知其然,而且要知其所以然,所以先给大家 ...
- 给idea设置默认使用的JDK
一,前言 在文章给idea设置默认使用的maven配置中我给我的idea设置了默认使用的maven,并且在setting.xml文件中,设置了本地的maven仓库,这样就不会使用maven默认在C盘的 ...
- Zuhair and Strings-祖海和字符串 CodeForce#1105B
题目链接:Zuhair and Strings 题目原文 Given a string
- embedding技术
目录 word2vec 负采样 目标函数 反向梯度 层次softmax NPLM的目标函数和反向梯度 目标函数 反向梯度 GNN(图神经网络) deepwalk node2vec 附录 word2ve ...
- 在vue项目中使用less
1.安装 less 和 less-loader. 命令: npm install less less-loader --save-dev 2.打开 build/webpack.ba ...
- 简述python的turtle绘画命令及解释
一 基础认识 turtle库是python的标准库之一,它是一个直观有趣的图形绘制数据库,turtle(海龟)图形绘制的概念诞生1969年.它的应用十分广,而且使用简单,只要在编写python程序时写 ...