diff --git a/.gitignore b/.gitignore index 0bb633a7fb..af92b7a969 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ build/user_config_headers # Project settings of the Genio IDE .genio + +# clangd related tooling for IDE code completion +compile_commands.json diff --git a/docs/develop/build/ide.rst b/docs/develop/build/ide.rst new file mode 100644 index 0000000000..174e65e600 --- /dev/null +++ b/docs/develop/build/ide.rst @@ -0,0 +1,29 @@ +Using an IDE +=============== + +Live Code Analysis +------------------ +While developing the Haiku codebase, it is possible to generate an inventory of compile commands +by passing the **-c** flag to jam. The resulting **compile_commands.json** document will assist +tools such as clangd_ in live analyzing our source code. + +.. code-block:: + :caption: Generating the **compile_commands.json** for clangd: + + $ mkdir generated.clangd && cd generated.clangd + $ configure --build-cross-tools x86_64 --cross-tools-source ../../buildtools + $ jam -anc @nightly-anyboot + $ ln -sr compile_commands.json ../compile_commands.json + + +When you use an editor which supports clangd_ such as helix_ or vim_ (with the clangd plugin), +clangd_ will have knowledge of the relevant include paths and build flags for every source file +within the Haiku codebase. + +.. TIP:: + When new source code files are added, you will need to run though the process above for a + complete database. + +.. _helix: http://helix-editor.com +.. _vim: http://vim.org +.. _clangd: http://clangd.llvm.org diff --git a/docs/develop/build/index.rst b/docs/develop/build/index.rst index 456e1cd27e..0c4337375b 100644 --- a/docs/develop/build/index.rst +++ b/docs/develop/build/index.rst @@ -7,4 +7,5 @@ The build system /build/jam /build/sourcecode /build/compilers + /build/ide /build/repositories/README