FIND-ALL-SYMBOLS(1)

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

πŸ’– NAME πŸ’–

find-all-symbols β€” it's the manual page for find-all-symbols 22, bestie, and yes that's the whole vibe πŸ’…


✨ DESCRIPTION ✨

Okay so, listen. Here's how you actually run this thing:

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

That's the shape of it: options first, then your source files. Simple. Iconic. Let's get into it 🫢

πŸŽ€ OPTIONS πŸŽ€

Generic Options

These are the "just asking questions" flags, no notes:

  • --help β€” shows you all the available options. (Pass --help-hidden if you want even more secrets revealed πŸ‘€)
  • --help-list β€” prints out the list of available options. (And --help-list-hidden for the extended director's cut 🎬)
  • --version β€” tells you which version of this program you're running, periodt.

find_all_symbols options

The actual main-character flags, no cap:

  • --extra-arg=<string> β€” an extra argument you want appended to the compiler command line.
  • --extra-arg-before=<string> β€” an extra argument you want prepended to the compiler command line. (Order matters, okay, that's the whole point of having both πŸ™ˆ)
  • --merge-dir=<string> β€” the directory used for merging symbols.
  • --output-dir=<string> β€” the directory where the results get saved.
  • -p <string> β€” the build path.

Now, about that -p one, because it's lowkey the most important thing here:

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

For example, it can totally be a CMake build directory β€” the kind that has a file named compile_commands.json sitting inside it (you get that output by using the -DCMAKE_EXPORT_COMPILE_COMMANDS=ON CMake option ✨). And when you don't specify a build path at all? It will attempt a search for compile_commands.json through every parent path of the first input file. Go little search algorithm go πŸ¦‹

If you want an actual example of how to set up Clang Tooling on a source tree, it's here: https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html

No pressure but like… setting this up properly is the vibe check. Do it once and you're set πŸ‘‘

And now the sources themselves:

<source0> ... β€” this is where you specify the paths of your source files. These paths get looked up in the compile command database. Rules, because of course there are rules:

  • If the path of a file is absolute, it needs to point into CMake's source tree.
  • If the path is relative, then the current working directory needs to be in the CMake source tree, and the file has to be in a subdirectory of the current working directory.
  • "./" prefixes in relative files get automatically removed β€” but the rest of a relative path must still be a suffix of a path inside the compile command database.

That's literally it, fr fr.

More help text...


And that's the whole page, bestie πŸ’– This was find-all-symbols version 22, from September 2026 β€” stay slay, stay compiled, and may your compile_commands.json always be findable πŸŒˆβ­πŸŽ€

πŸ“¦ where this page comes from