V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
primitive
V2EX  ›  程序员

C++看开源代码有什么好方法吗?

  •  1
     
  •   primitive · 2022-09-03 13:17:56 +08:00 · 5141 次点击
    这是一个创建于 846 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在 C++项目一般是用 cmake 构建,include, source 文件夹分离,这样的话调试很方便。但我想仅阅读原代码,由于头文件路径问题,vscode 自带的“跳转到函数实现”不能用
    34 条回复    2022-09-05 01:13:20 +08:00
    yingxiangyu
        1
    yingxiangyu  
       2022-09-03 13:20:03 +08:00   ❤️ 2
    换个 IDE
    SoulDee
        2
    SoulDee  
       2022-09-03 13:23:45 +08:00   ❤️ 1
    那个,这世界上不是只有 vscode 这一款编辑器的,CLion, VS 都可以看,Qt Creater 虽然调试可能没前两者那么厉害,但是看代码的话我更喜欢( h 和 cpp 在不需要在文件夹分离。会在编辑器文件列表视图自动给你分开,按 F1 还能在 h 和 cpp 跳转)
    ch2
        3
    ch2  
       2022-09-03 13:47:29 +08:00   ❤️ 3
    你指定一下 includePath 不就行了,vscode 插件全靠自己调教
    nightwitch
        4
    nightwitch  
       2022-09-03 13:59:29 +08:00
    换个可以正确跳转的 IDE
    hsfzxjy
        5
    hsfzxjy  
       2022-09-03 14:00:21 +08:00 via Android
    改下 includePath 就好了
    justanetizen
        6
    justanetizen  
       2022-09-03 14:31:03 +08:00   ❤️ 1
    看 big project 的源码,推荐 source insight
    churchill
        7
    churchill  
       2022-09-03 14:43:19 +08:00
    能编译就能生成 compile_commands.json
    跳转代码啥的有啥问题
    Noicdi
        8
    Noicdi  
       2022-09-03 14:43:55 +08:00   ❤️ 1
    vscode 的话,插件可以用 clangd ,然后通过 bear 生成项目的 compile_commands.json ,这样 clangd 就挺好识别的,跳转什么的挺好用
    在 jyy 老师那边学到的,可以看看这个视频
    https://www.bilibili.com/video/BV1DY4y1a7YD?spm_id_from=333.999.0.0&vd_source=85b04fb11ee5c7ac4c5243ba3579803b&t=2987.5
    jones2000
        9
    jones2000  
       2022-09-03 15:26:10 +08:00
    需要看什么功能, 直接 debug 跑起来,调用你要看的功能,然后单步调试+看代码就可以了,不明白的地方打印变量值看看,如果要要转跳其他分支,手动修改内存变量就可以了,这样能更好的理解代码。 纯看代码感觉没什么用, 跟看小说一样,看完就忘,
    missdeer
        10
    missdeer  
       2022-09-03 15:38:23 +08:00   ❤️ 1
    CMakeLists.txt 里加一句 自动导出 compile_commands.json
    set(CMAKE_EXPORT_COMPILECOMMANDS ON)

    再装一个 clangd 插件,索引建完就好用了
    mineralsalt
        11
    mineralsalt  
       2022-09-03 15:45:31 +08:00
    clion 呗, vscode 也就写前端还行
    hello2090
        12
    hello2090  
       2022-09-03 15:49:12 +08:00 via iPhone
    看代码就是 source code 啊
    hello2090
        13
    hello2090  
       2022-09-03 15:53:56 +08:00 via iPhone   ❤️ 1
    @hello2090 说错了 source insight ,我在国内工作过的两家公司,sourceinsight 和 beyond compare 都是标配。难道现在不是 C++就不流行他们了?
    user0
        14
    user0  
       2022-09-03 16:39:05 +08:00 via Android
    小型项目用 ide ,中型用 source insight ,大型用 opengrok
    fatigue
        15
    fatigue  
       2022-09-03 17:14:34 +08:00   ❤️ 1
    图形界面就 source insight ,终端就 vim+cscope+ctags
    hankai17
        16
    hankai17  
       2022-09-03 17:50:14 +08:00
    c++的话 还是能配合一起调试 阅读起来更方便
    bzEq
        17
    bzEq  
       2022-09-03 18:15:48 +08:00
    vscode 装个 clangd 就行了。然后在你的项目根目录做个软链接到你编译目录的`compile_commands.json`。
    hysjw
        18
    hysjw  
       2022-09-03 19:00:27 +08:00 via iPhone
    我记得现在的插件 compile_commands.json 都是默认启用的 有这个就能自动识别
    FrankHB
        19
    FrankHB  
       2022-09-03 19:13:12 +08:00
    @justanetizen @hello2090 Source Insight ?得了吧,那玩意儿现在怕是还不如开个 VS 手动 Ctrl+Shift+F 靠谱呢。
    而且默认那个故意放大标识符制造语法噪音,反而导致破坏等宽字体的阅读效率,基本就是平时不会习惯同时编辑和阅读的代码的初级用户才会吹的。

    BC 倒是还算好用,但对付代码也没和 KDiff3 之类拉开差距,要经常合并怕还不如。
    YuriX
        20
    YuriX  
       2022-09-03 19:35:52 +08:00
    UE 这种规模的话,VS+VAX 就可以
    wzcloud
        21
    wzcloud  
       2022-09-03 20:20:00 +08:00
    用 Clion
    ptyfork
        22
    ptyfork  
       2022-09-03 20:48:13 +08:00
    Vscode + clangd + remote 简直完美
    littlewing
        23
    littlewing  
       2022-09-03 20:53:08 +08:00
    CLion
    cpper
        24
    cpper  
       2022-09-04 02:01:42 +08:00
    @YuriX rider 不香嘛
    conanforever22
        25
    conanforever22  
       2022-09-04 06:35:01 +08:00
    bear/cmake 生成 compile_commands.json 然后用 ccls 等 lsp server
    https://github.com/rizsotto/Bear
    https://github.com/MaskRay/ccls/wiki/Editor-Configuration
    PowerDi
        26
    PowerDi  
       2022-09-04 10:49:54 +08:00
    @SoulDee 如果是 CLion 的话,不需要 cmake 就可以跳转代码吗?
    PowerDi
        27
    PowerDi  
       2022-09-04 10:51:39 +08:00
    @Noicdi 看了视频 觉得我以前看的视频跟你们关注的真的差好远 竟然有那么实用的
    PowerDi
        28
    PowerDi  
       2022-09-04 10:58:55 +08:00
    @ptyfork 一直没有理解官方的 c++插件有几个功能是跟代码跳转和提示有关的。大家都在建议 clangd ,这个能更具体的请教一下区别在哪里吗
    52coder
        29
    52coder  
       2022-09-04 11:29:15 +08:00
    @justanetizen windows 下的神器,换了 mac 没有 source insight 呀,而且这个软件好久没更新了吧,都是盗版,我同事花 5000 买了个正版😁
    weiqk
        30
    weiqk  
       2022-09-04 15:34:15 +08:00 via Android
    @52coder 不是 239 美金嗎?
    seanzxx
        31
    seanzxx  
       2022-09-04 16:12:08 +08:00
    好像没人提 Understand 呀,多语言支持,多平台支持
    https://www.scitools.com
    52coder
        32
    52coder  
       2022-09-04 16:48:34 +08:00
    @weiqk 4000 刀的都有,不同版本的,我猜你说的这个 239 应该只能用一个版本
    liuguangxuan
        33
    liuguangxuan  
       2022-09-04 21:23:26 +08:00
    @seanzxx #31 Understand 用不起,太贵了 😂
    seanzxx
        34
    seanzxx  
       2022-09-05 01:13:20 +08:00 via iPhone
    @52coder 价格贵的不是不同版本,是打包购买,239 是一个 license ,4180 是 20 个 license ,套装等于批发价会便宜点,你同事买的是多个的套装?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:17 · PVG 19:17 · LAX 03:17 · JFK 06:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.