V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
marcosteam
V2EX  ›  问与答

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

  •  
  •   marcosteam · 2018-05-23 00:57:43 +08:00 · 2080 次点击
    这是一个创建于 2137 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前我也提到过,我自学的时间不长,高中只是断断续续自学了一点 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 一样可以直接开始编译,还得我们手动选择路径进行编译调试,是不是就显得有点不那么智能了呢?
    10 条回复    2018-05-29 13:49:32 +08:00
    quinoa42
        1
    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
        2
    quinoa42  
       2018-05-23 03:04:03 +08:00
    @quinoa42 修正,应该是 brew install make,不过 brew 的 make 是用 gmake 以此与 mac 自带的进行区分
    这么做的区别是自带的 make 因为安全的原因无法被 bear 读取
    inflationaaron
        3
    inflationaaron  
       2018-05-23 03:18:14 +08:00 via iPhone
    没必要,用 cquery 的话直接在.cquery 里面写编译 flags 就行了
    lsmgeb89
        4
    lsmgeb89  
       2018-05-23 05:55:43 +08:00
    直接 CLion 简单一点,一上来不要搞的太复杂。
    lsmgeb89
        5
    lsmgeb89  
       2018-05-23 05:56:05 +08:00
    Windows 的话就 VS 好了……
    ech0x
        6
    ech0x  
       2018-05-23 07:01:03 +08:00 via iPhone
    简单的项目用.ycm_extra_conf.py 改改编译参数就好了,复杂的项目构建工具可以自动生成 compile_commands.json 的,用 cmake 的话,CMAKE_EXPORT_COMPILE_COMMANDS 可以自动生成 compile_commands.json
    lance6716
        7
    lance6716  
       2018-05-23 09:43:06 +08:00 via Android
    新手别学资深程序员不用 IDE 好吧…
    KeepPro
        8
    KeepPro  
       2018-05-23 09:43:32 +08:00 via Android
    因为编译工具需要当前项目的一些信息。
    John60676
        9
    John60676  
       2018-05-23 11:16:46 +08:00
    CLion 吧,初学别折腾那么多。
    MaskRay
        10
    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 简化但更不容易被保存弄坏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1181 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:22 · PVG 02:22 · LAX 11:22 · JFK 14:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.