Update reference, add script to do so. Updates reference.md with the latest GN changes. Adds a simple script to generate this so you don't have to remember or look up the correct switches. Change-Id: If641978f445014b93be3d9a10f59b5415de4faf4 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/14561 Commit-Queue: Brett Wilson <brettw@chromium.org> Reviewed-by: Takuto Ikuta <tikuta@google.com>
diff --git a/docs/reference.md b/docs/reference.md index 3ebed7a..8dd8ba8 100644 --- a/docs/reference.md +++ b/docs/reference.md
@@ -919,21 +919,37 @@ replay of individual compilations independent of the build system. This is an unstable format and likely to change without warning. + --add-export-compile-commands=<label_pattern> + Adds an additional label pattern (see "gn help label_pattern") of a + target to add to the compilation database. This pattern is appended to any + list values specified in the export_compile_commands variable in the + .gn file (see "gn help dotfile"). This allows the user to add additional + targets to the compilation database that the project doesn't add by default. + + To add more than one value, specify this switch more than once. Each + invocation adds an additional label pattern. + + Example: + --add-export-compile-commands=//tools:my_tool + --add-export-compile-commands="//base/*" + --export-compile-commands[=<target_name1,target_name2...>] - Produces a compile_commands.json file in the root of the build directory - containing an array of “command objects”, where each command object - specifies one way a translation unit is compiled in the project. If a list - of target_name is supplied, only targets that are reachable from any - target in any build file whose name is target_name will be used for - “command objects” generation, otherwise all available targets will be used. - This is used for various Clang-based tooling, allowing for the replay of - individual compilations independent of the build system. - e.g. "foo" will match: - - "//path/to/src:foo" - - "//other/path:foo" - - "//foo:foo" + DEPRECATED https://bugs.chromium.org/p/gn/issues/detail?id=302. + Please use --add-export-compile-commands for per-user configuration, and + the "export_compile_commands" value in the project-level .gn file (see + "gn help dotfile") for per-project configuration. + + Overrides the value of the export_compile_commands in the .gn file (see + "gn help dotfile") as well as the --add-export-compile-commands switch. + + Unlike the .gn setting, this switch takes a legacy format which is a list + of target names that are matched in any directory. For example, "foo" will + match: + - "//path/to/src:foo" + - "//other/path:foo" + - "//foo:foo" and not match: - - "//foo:bar" + - "//foo:bar" ``` ### <a name="cmd_help"></a>**gn help <anything>** @@ -6953,6 +6969,28 @@ "//build/my_config.gni", ] + export_compile_commands [optional] + A list of label patterns for which to generate a Clang compilation + database (see "gn help label_pattern" for the string format). + + When specified, GN will generate a compile_commands.json file in the root + of the build directory containing information on how to compile each + source file reachable from any label matching any pattern in the list. + This is used for Clang-based tooling and some editor integration. See + https://clang.llvm.org/docs/JSONCompilationDatabase.html + + The switch --add-export-compile-commands to "gn gen" (see "gn help gen") + appends to this value which provides a per-user way to customize it. + + The deprecated switch --export-compile-commands to "gn gen" (see "gn help + gen") adds to the export target list using a different format. + + Example: + export_compile_commands = [ + "//base/*", + "//tools:doom_melon", + ] + root [optional] Label of the root build target. The GN build will start by loading the build file containing this target name. This defaults to "//:" which will
diff --git a/tools/update_reference.sh b/tools/update_reference.sh new file mode 100755 index 0000000..50427e1 --- /dev/null +++ b/tools/update_reference.sh
@@ -0,0 +1,12 @@ +#!/bin/sh + +# Check for the existance of the AUTHORS file as an easy way to determine if +# it's being run from the correct directory. +if test -f "AUTHORS"; then + echo Building gn... + ninja -C out gn + echo Generating new docs/reference.md... + out/gn help --markdown all > docs/reference.md +else + echo Please run this command from the GN checkout root directory. +fi