Ninja: Permintaan fitur: pencocokan nama aturan yang lebih fleksibel di alat compdb

Dibuat pada 20 Sep 2015  ·  12Komentar  ·  Sumber: ninja-build/ninja

Saat ini, untuk menggunakan alat compdb Anda perlu mengetahui nama pasti dari aturan yang ingin Anda kueri. Ini berfungsi dengan baik asalkan nama-nama ini dapat diprediksi, tetapi ini belum tentu berlaku untuk beberapa generator.

Terutama, di versi 3.2 (saya pikir) generator ninja CMake telah mulai membuat aturan dalam bentuk <lang>_COMPILER__<directory> . Ini berarti bahwa untuk menanyakan database kompilasi, Anda harus terlebih dahulu memindai pohon direktori proyek, atau menggunakan peretasan lainnya. CMake sebelum 3.2 menghasilkan aturan dalam bentuk <lang>_COMPILER yang memungkinkan mereka untuk melakukan kueri dari alat generik - tanpa pengetahuan khusus tentang proyek tersebut.

Oleh karena itu permintaan fitur ini adalah untuk pencocokan nama aturan yang lebih fleksibel terhadap argumen baris perintah. Implementasi yang berguna minimal akan memungkinkan pencocokan hanya awalan. Atau pencocokan regex juga akan berguna.

Komentar yang paling membantu

Saya menemukan alat compdb cukup sulit untuk digunakan -- bagi saya, itu mengejutkan bahwa itu membutuhkan daftar aturan (butuh beberapa saat sampai saya mengetahuinya). Mungkin jika tidak ada aturan eksplisit yang disahkan secara eksplisit, itu bisa berarti "semua aturan"? Apakah itu cukup untuk build berbasis cmake?

(Tidak terkait: Saya pikir Anda dapat meneruskan CMAKE_EXPORT_COMPILE_COMMANDS ke cmake untuk membuatnya menulis database kompilasi secara langsung.)

Semua 12 komentar

Di masa lalu ada alat "aturan" (7b67e48a1479c6fc7326c55756088bd57d64fc82) yang dapat mencetak daftar semua aturan. Dengan alat itu kita bisa melakukan sesuatu seperti itu:

ninja -t compdb `ninja -t rules | grep 'CXX_COMPILER_'`

Saya pikir itu akan menjadi ide yang baik untuk menghidupkan kembali alat ini karena itu juga dapat membantu untuk menulis skrip penyelesaian shell. Saya akan mencoba melakukannya dalam beberapa hari ke depan.

Itu juga akan berhasil, terima kasih.

Saya menemukan alat compdb cukup sulit untuk digunakan -- bagi saya, itu mengejutkan bahwa itu membutuhkan daftar aturan (butuh beberapa saat sampai saya mengetahuinya). Mungkin jika tidak ada aturan eksplisit yang disahkan secara eksplisit, itu bisa berarti "semua aturan"? Apakah itu cukup untuk build berbasis cmake?

(Tidak terkait: Saya pikir Anda dapat meneruskan CMAKE_EXPORT_COMPILE_COMMANDS ke cmake untuk membuatnya menulis database kompilasi secara langsung.)

Apakah ada orang disini? 🙂

alat aturan tampaknya dihapus dari build?

Ini akan sangat membantu.

Saya suka saran @nico untuk hanya mencetak semua aturan secara default. Di masa depan sesuatu yang lebih canggih (seperti pencocokan wildcard) dapat ditambahkan jika diperlukan.

Saya perhatikan solusi yang disarankan @sarcasm di sini agak jelek, memotivasi solusi yang lebih indah di ninja itu sendiri :)

Sekarang ada #1377 untuk membuang semua aturan secara default.

Ingin menambahkan catatan kecil di sini, tampaknya untuk beberapa proyek CMake [0], ninja -t compdb (tanpa argumen) tidak akan membuang apa pun (outputnya adalah daftar kosong [] ).

cmake -G Ninja .
ninja -t compdb
[
]

Namun, menggunakan CMAKE_EXPORT_COMPILE_COMMANDS seperti yang disarankan nico akan:

cmake -G Ninja . -DCMAKE_EXPORT_COMPILE_COMMANDS=1
ninja -t compdb
[
]

ninja -t compdb masih mengembalikan kosong, tetapi compile_commands.json sudah dibuat.

Terima kasih niko!

[0] untuk Binaryen setidaknya

Apa yang dikatakan ninja --version ?

1.8.2, btw ninja ini berasal dari depot_tools

Versi itu hilang #1377.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat