• 请不要在回答技术问题时复制粘贴 AI 生成的内容
primitive
V2EX  ›  程序员

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

  •  1
     
  •   primitive · Sep 3, 2022 · 6981 views
    This topic created in 1521 days ago, the information mentioned may be changed or developed.
    现在 C++项目一般是用 cmake 构建,include, source 文件夹分离,这样的话调试很方便。但我想仅阅读原代码,由于头文件路径问题,vscode 自带的“跳转到函数实现”不能用
    34 replies  •  2022-09-05 01:13:20 +08:00
    yingxiangyu
    yingxiangyu
    Sep 3, 2022❤️2
    1
    换个 IDE
    SoulDee
    SoulDee
    Sep 3, 2022❤️1
    2
    那个,这世界上不是只有 vscode 这一款编辑器的,CLion, VS 都可以看,Qt Creater 虽然调试可能没前两者那么厉害,但是看代码的话我更喜欢( h 和 cpp 在不需要在文件夹分离。会在编辑器文件列表视图自动给你分开,按 F1 还能在 h 和 cpp 跳转)
    ch2
    ch2
    Sep 3, 2022❤️3
    3
    你指定一下 includePath 不就行了,vscode 插件全靠自己调教
    nightwitch
    nightwitch
    Sep 3, 2022
    4
    换个可以正确跳转的 IDE
    hsfzxjy
    hsfzxjy
    Sep 3, 2022 via Android
    5
    改下 includePath 就好了
    justanetizen
    justanetizen
    Sep 3, 2022❤️1
    6
    看 big project 的源码,推荐 source insight
    churchill
    churchill
    Sep 3, 2022
    7
    能编译就能生成 compile_commands.json
    跳转代码啥的有啥问题
    Noicdi
    Noicdi
    Sep 3, 2022❤️1
    8
    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
    jones2000
    Sep 3, 2022
    9
    需要看什么功能, 直接 debug 跑起来,调用你要看的功能,然后单步调试+看代码就可以了,不明白的地方打印变量值看看,如果要要转跳其他分支,手动修改内存变量就可以了,这样能更好的理解代码。 纯看代码感觉没什么用, 跟看小说一样,看完就忘,
    missdeer
    missdeer
    Sep 3, 2022❤️1
    10
    CMakeLists.txt 里加一句 自动导出 compile_commands.json
    set(CMAKE_EXPORT_COMPILECOMMANDS ON)

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

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