一些关于 C++编译,或者说是它们的文本编辑器的小问题

2018-05-23 00:57:43 +08:00
 marcosteam
之前我也提到过,我自学的时间不长,高中只是断断续续自学了一点 Python,现在大学里面要求学 C++,然后写程序的时候就有一些问题了。

1.之前我也提到了用 NVim(Vim)+deoplete(YCM)来构建 IDE 的事情,其中对于 C++的补全,他们都要求有一个 compile_commands.json 的文件,这个要如何生成?看文档虽然明白它是要存放编译的信息,但是我还是不知道为什么要用到它?而且,为什么每一个存放 cpp 文件的文件夹都要有一个这个文件?就不能一次生成吗?

2.后来用回了我的老相好 VSCode,但是为什么 Windows 版编译调试要用修改 lauch.json,还有 c_cpp_properties.json 等等这些文件呢?代码补全也是,它也不像 Python,装好以后马上就可以补全,对于 C++还得修改 c_cpp_properties.json,否则是绝对没有补全的。现在我们的课程所编写的程序还是以单个.cpp 文件的小程序为主,VSCode 也不能像 Code::blocks 一样可以直接开始编译,还得我们手动选择路径进行编译调试,是不是就显得有点不那么智能了呢?
2293 次点击
所在节点    问与答
10 条回复
quinoa42
2018-05-23 03:01:43 +08:00
https://github.com/cquery-project/cquery/wiki#compile_commandsjson

我的解决方案很简单粗暴
brew install bear
brew install gmake
make clean && bear gmake
quinoa42
2018-05-23 03:04:03 +08:00
@quinoa42 修正,应该是 brew install make,不过 brew 的 make 是用 gmake 以此与 mac 自带的进行区分
这么做的区别是自带的 make 因为安全的原因无法被 bear 读取
inflationaaron
2018-05-23 03:18:14 +08:00
没必要,用 cquery 的话直接在.cquery 里面写编译 flags 就行了
lsmgeb89
2018-05-23 05:55:43 +08:00
直接 CLion 简单一点,一上来不要搞的太复杂。
lsmgeb89
2018-05-23 05:56:05 +08:00
Windows 的话就 VS 好了……
ech0x
2018-05-23 07:01:03 +08:00
简单的项目用.ycm_extra_conf.py 改改编译参数就好了,复杂的项目构建工具可以自动生成 compile_commands.json 的,用 cmake 的话,CMAKE_EXPORT_COMPILE_COMMANDS 可以自动生成 compile_commands.json
lance6716
2018-05-23 09:43:06 +08:00
新手别学资深程序员不用 IDE 好吧…
KeepPro
2018-05-23 09:43:32 +08:00
因为编译工具需要当前项目的一些信息。
John60676
2018-05-23 11:16:46 +08:00
CLion 吧,初学别折腾那么多。
MaskRay
2018-05-29 13:49:32 +08:00
@inflationaaron 也可以来用我的 https://github.com/MaskRay/ccls $ccls/memberHierarchy textDocument/definition workspace/symbol 一些细节有改进,cacheFormat 默认 binary 比 msgpack 更小,pipeline 简化但更不容易被保存弄坏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/457005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX