mcpp projects: no root compile_commands.json by default; read mcpp's result record for fallback and refresh

Đang mở
#71 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
cpp

Hướng nghiên cứu

Read src/project/mcpp.cppm at McppProvider::describe and the referenced mcpp design sections §7 and §5.2. Trace how the fallback selects a compilation database and how build refresh is forwarded by the editor extension; check the CLion e2e coverage. Done means the result record pointer is preferred, the root database remains a compatibility fallback, and the proposed refresh and CLion behavior are covered.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Context

The next mcpp release changes two things mcppls touches on mcpp projects (design: mcpp/.agents/docs/2026-10-26-control-contract-runtime-and-ide-ecosystem-design.md, §7 and §5.2):

  1. The project-root compile_commands.json is no longer written by default. It becomes opt-in through [build] compile_commands = "<path>" in mcpp.toml (or a default in ~/.mcpp/config.toml). An existing root copy is no longer updated, and mcpp prints a one-time note. The per-configuration database (target/<triple>/<fp>/compile_commands.json) stays.
  2. mcpp writes a result record after every build (target/<triple>/<fp>/result.json, kind mcpp.result), plus a project-level pointer target/.last-result.json naming the most recent configuration. The record carries the configuration's compile database path, the diagnostics, and the artifacts.

What this means for mcppls

  • Fallback path. McppProvider::describe falls back to a leftover root compile_commands.json when mcpp cannot be asked (src/project/mcpp.cppm:41). After the change, that file is usually absent. The fallback should read the database named by target/.last-result.json first, and the root file only when the pointer is missing (older mcpp).
  • Refresh after a build. Watching target/.last-result.json (written by atomic rename) tells mcppls that a build finished, whoever ran it: a terminal, an agent's shell, or an IDE. Today the refresh is forwarded by the editor extension.
  • CLion. Without a root compile_commands.json, CLion no longer loads an mcpp project as a Compilation Database workspace, so ClionModel no longer treats it as CLion's and mcppls starts by default. No code change is expected; an e2e assertion would pin it.

Nothing breaks immediately: the primary path (mcpp emit build-database) is unchanged. This issue tracks adopting the result record when that mcpp release ships.

Ngôn ngữ chính
C++
Star
25
Fork
2
Merge trung bình
21 giờ 5 phút
Pull request đã merge (30 ngày)
13

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Sunrisepeak/mcpp-language-server

Tất cả issue của Sunrisepeak/mcpp-language-server

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.