xcode_compilation_db.py creates compilation database compile_commands.json from Xcode projects.
It uses the same approach as scan-build
in Clang Static Analyzer. I.e. it replaces C and C++ compilers with c_interposer.py
and cpp_interposer.py
respectively. Then it invokes xcodebuild
and aforementioned scripts intercept and store compilation commands. xcode_compilation_db.py
is used the following way:
python xcode_compilation_db.py xcodebuild -scheme FooApp build
Please note that the tool is new and untested. Use it cautiously.
Bear by László Nagy. Main disadvantage for me is that it needs to be compiled. I prefer a Python script. And I haven't checked how it works with Xcode projects.
DTrace. Sean Silva has suggested to use DTrace to generate compile_commands.json and there is even execsnoop example. Unfortunately, on Mac OS X curpsinfo->pr_psargs
doesn't work. You can try to inspect execve arguments directly with arg0, arg1, etc. Brendan Gregg has written a nice instruction how to do this. But arg1 is char *const argv[]
and I haven't found any way to inspect null-terminated array.
oclint/oclint-xcodebuild. It creates compile_commands.json by parsing xcodebuild
output. I have found it after creating xcode_compilation_db.py
and haven't checked how it works.
clang-tags by François Févotte. See User manual. 2.1. Creating the compilation database for more details.