aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/IDE-integration.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/IDE-integration.md')
-rw-r--r--docs/markdown/IDE-integration.md40
1 files changed, 17 insertions, 23 deletions
diff --git a/docs/markdown/IDE-integration.md b/docs/markdown/IDE-integration.md
index a6c89bb..bd5dff2 100644
--- a/docs/markdown/IDE-integration.md
+++ b/docs/markdown/IDE-integration.md
@@ -6,38 +6,32 @@ short-description: Meson's API to integrate Meson support into an IDE
Meson has exporters for Visual Studio and XCode, but writing a custom backend for every IDE out there is not a scalable approach. To solve this problem, Meson provides an API that makes it easy for any IDE or build tools to integrate Meson builds and provide an experience comparable to a solution native to the IDE.
-The basic resource for this is the `meson-introspection.json` file in the build directory.
+All the resources required for such a IDE integration can be found in the `meson-info` directory in the build directory.
The first thing to do when setting up a Meson project in an IDE is to select the source and build directories. For this example we assume that the source resides in an Eclipse-like directory called `workspace/project` and the build tree is nested inside it as `workspace/project/build`. First, we initialize Meson by running the following command in the source directory.
meson builddir
-The `meson-introspection.json` can then be found in the root of this build directory. It will be automatically updated when meson is (re)configured, or the build options change. As a result, an IDE can watch for changes in this file to know when something changed.
+With this command meson will configure the project and also generate introspection information that is stored in `intro-*.json` files in the `meson-info` directory. All files will be automatically updated when meson is (re)configured, or the build options change. Thus, an IDE can watch for changes in this directory to know when something changed.
-The basic JSON format structure defined as follows:
+The `meson-info` directory should contain the following files:
-```json
-{
- "benchmarks": [],
- "buildoptions": [],
- "buildsystem_files": ["just", "a", "list", "of", "meson", "files"],
- "dependencies": [],
- "installed": {},
- "projectinfo": {
- "version": "1.2.3",
- "descriptive_name": "Project Name",
- "subprojects": []
- },
- "targets": [],
- "tests": []
-}
-```
+ File | Description
+ ------------------------------- | ---------------------------------------------------------------------
+ `intro-benchmarks.json` | Lists all benchmarks
+ `intro-buildoptions.json` | Contains a full list of meson configuration options for the project
+ `intro-buildsystem_files.json` | Full list of all meson build files
+ `intro-dependencies.json` | Lists all dependencies used in the project
+ `intro-installed.json` | Contains mapping of files to their installed location
+ `intro-projectinfo.json` | Stores basic information about the project (name, version, etc.)
+ `intro-targets.json` | Full list of all build targets
+ `intro-tests.json` | Lists all tests with instructions how to run them
-The content of each JSON entry in this format is further specified in the remainder of this document.
+The content of the JSON files is further specified in the remainder of this document.
## The `targets` section
-The most important entry for an IDE is probably the `targets` section. Here each target with its sources and compiler parameters is specified. The JSON format for one target is defined as follows:
+The most important file for an IDE is probably `intro-targets.json`. Here each target with its sources and compiler parameters is specified. The JSON format for one target is defined as follows:
```json
{
@@ -57,7 +51,7 @@ A target usually generates only one file. However, it is possible for custom tar
### Target sources
-The `sources` entry stores a list of all source objects of the target. With this information, an IDE can provide code completion for all source files.
+The `intro-sources.json` file stores a list of all source objects of the target. With this information, an IDE can provide code completion for all source files.
```json
{
@@ -83,7 +77,7 @@ The following table shows all valid types for a target.
## Build Options
-The list of all build options (build type, warning level, etc.) is stored in the `buildoptions` list. Here is the JSON format for each option.
+The list of all build options (build type, warning level, etc.) is stored in the `intro-buildoptions.json` file. Here is the JSON format for each option.
```json
{