FIND-ALL-SYMBOLS(1)

πŸ“¦
version 21.1.8 Β· 3 versions
, in ubuntu stonking

πŸŽ€ NAME πŸŽ€

okay so bestie, welcome to find-all-symbols β€” it's the manual page for find-all-symbols version 21, living in the User Commands section. She finds ALL the symbols, she's literally the main character, and she's about to walk you through every single flag she's got. πŸ’…


✨ DESCRIPTION ✨

First things first, the usage, and I need you to read this exactly as written because she is particular:

find-all-symbols [options] <source0> [... <sourceN>]

Then it's OPTIONS: time, and there's a lot to cover, so buckle up πŸ¦‹


🌈 Generic Options 🌈

The basics, the vibes, the every-program-has-these girlies:

  • --help β€” displays the available options. (And if you want the hidden lore, there's --help-hidden for more πŸ‘€)
  • --help-list β€” displays a list of available options. (Same story: --help-list-hidden gives you more.)
  • --version β€” displays the version of this program. Iconic, no notes.

πŸ¦‹ find_all_symbols options πŸ¦‹

Now the actual fun part, her personal flags:

  • --extra-arg=<string> β€” an additional argument to append to the compiler command line. It goes on the end, bestie.
  • --extra-arg-before=<string> β€” an additional argument to prepend to the compiler command line. Yeah, this one goes on the front. Front vs back, that's the whole difference. πŸ’«
  • --merge-dir=<string> β€” the directory for merging symbols. That's where the merge happens. Merging place. Merge zone. 🫢
  • --output-dir=<string> β€” the output directory for saving the results. Her lil results folder πŸ“
  • -p <string> β€” build path. But like, there's so much more to say about this one, so keep reading.

πŸ”₯ the -p <build-path> situation πŸ”₯

So -p <build-path> is used to read a compile command database. That's the whole job.

For example β€” and this is the actual example, not me making stuff up β€” it can be a CMake build directory in which a file named compile_commands.json exists. To get that output you use the -DCMAKE_EXPORT_COMPILE_COMMANDS=ON CMake option. Write that down. ✍️

When no build path is specified, a search for compile_commands.json will be attempted through all parent paths of the first input file. So she goes looking, all the way up, like a determined girlie hunting down the aux cord. πŸ”Ž

And if you want an example of setting up Clang Tooling on a source tree, see:

https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html

🧚 the source files 🧚

<source0> ... specify the paths of source files. So simple, so powerful.

These paths are looked up in the compile command database. Here's the rules, and they are strict, okay:

  • If the path of a file is absolute, it needs to point into CMake's source tree.
  • If the path is relative, the current working directory needs to be in the CMake source tree, and the file must be in a subdirectory of the current working directory.
  • "./" prefixes in the relative files will be automatically removed (she's tidy like that πŸ’…), but the rest of a relative path must be a suffix of a path in the compile command database.

That last bit is not optional, bestie. Suffix. Of. A. Path. In. The. Compile. Command. Database. Periodt.


πŸ‘‘ More help text... πŸ‘‘

More help text...

Yeah. That's literally what it says. She's mysterious. She's got lore she's not sharing. Respect it. πŸ™ˆ


heads up 🫢 everything above is copied from the original page with love and zero detail lost β€” every flag, every default, every path, every rule. Take her at her word and you'll be fine.

and that's the whole page, babes πŸ’– it's find-all-symbols version 21, and this manual page is dated September 2026. go forth, find your symbols, slay your build, and remember: compile_commands.json is not a want, it's a need. πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from