title: C++ 常见开发环境
author: ZHJT
date: 2024-03-21 00:48:21
tags:
实际工作中 C++ 开发环境通常是什么样子?
平台 | 编译器 | 项目管理 |
---|---|---|
Windows | MSVC | |
Linux | g++ | |
Mac | clang |
Linux:
在公司做开发的话:
一般Compilation和Linking这两步你都是没得选的,全公司统一的工具。统一配发的工具链。关于这一点没什么可说的,编译环境必然需要所有人全部统一,无论你使用什么发行版。
- 而你用Linux开发了,大多数情况下都是服务器,一般来讲你都是没权限安这个安那个的,XWindow没有那就是没有,所以vim和emacs你至少要学会一样,一般会有Eclipse,但什么gedit,sublime就别想了。而事实上,如果你习惯linux命令行的很多功能,那你是会习惯vim和less的。
- 另外,grep才是真正帮你理解别人程序的利器。Vim真正的缺点是那个声音,比如你走到行的尽头那个九十年代的报错声...
- GDB 是个很nb的东西,但前提是你真的要很明白你在做什么。因为GDP这东西他没有很好的GUI,你用step,他能一路走的巨深无比在无数库里徘徊,最后你根本回不来了就,用next或设breakPoint的话,你其实已经很明白程序的flow了,而到了这个时候,其实printf就够了。GDB一般是直接找崩溃的地方以及stack trace时很有用。不能说就真比printf更有用。
版本控制:
有很多项目,通常使用 svn/hg/git。原先使用 svn 的为主,后来都转到了 hg,目前大多数项目使用 hg。至于 git 因为使用配置太过复杂,目前只有一个项目组使用。对于存在 svn 历史积淀的项目组来说,hg 确实是一个远超越 git 的神器。
传统的那一套:
editor: neovim + spacevim / spacemacs, 用法几乎一样. emacs CS方式, 本地或者远程溜得飞起. 写简单程序, 脚本等
IDE: eclipse cdt + makefile(也可以手动写Makefile), 阅读代码 + 调试
debugger: gdb + printk、systemtap
lint: pypep8, pylint, jslint
script: bash, shellcheck
编译工具:gcc g++
代码跟踪用cscope , ctags:
静态代码检查splint,
优化用gprof,
工程用autoconf
如果需要语义补全、实时编译检查这样的IDE拳头功能的话,可以试试看基于libclang的一系列工具,比如vim下我很喜欢的YouCompleteMe,还有一些开源IDE也在集成libclang了(kdevelop?)。比起ctags这样的静态字符串分析来说,还是强大很多的。llvm + clang的确很厉害。
分模块的定制化调试、开发:
没经历过大型项目的开发,只写过一些模块。低端码农介绍一下我司的开发环境。
主要明确一个概念,linux下写c系开发就不要指望什么IDE,因为性能或者功能上没一个能用的。所以,编辑、编译、调试,分成不同的模块进行,u got it?
代码同步:虚拟机设置共享文件夹,vs改代码,ctrl+shift+s即同步,重新编译一下即可调试。
编辑器:vs,注意Linux头文件加进来,避免报错。(win)
编译器:gcc(linux)
调试器:cgdb(linux),这调试器比较强的一点就是能将代码和gdb命令结合在一块,看起来有了那么一点点调试的意味。
评论区