<div dir="ltr"><div><div>hi Manuel,<br><br></div>i would like to clarify the compilation database format once more. i think the <a href="http://clang.llvm.org/docs/JSONCompilationDatabase.html" target="_blank">page</a> has a wrong example which might be misleading. i'm developing an application which tries to generate compilation database as output, so it would be nice to clarify the documentation a bit.<br><br></div><div>here comes a simple test program.<br><br>  void test(const char * const message) { }<br></div><div>  int main() { test(MESSAGE); return 0; }</div><div><br></div><div>this can be compiled from shell with this command:<br><br><div>  $ clang -E test.c -DMESSAGE=\"hi\ there\" | grep -v ^#</div><div>  void test(const char * const message) { }</div><div>  int main() { test("hi there"); return 0; }</div><br></div><div>to create a cmake file to compile this:<br><br>  project(testing C)<br>  cmake_minimum_required(VERSION 2.8)<br>  add_definitions(-DMESSAGE="hi there")<br>  add_executable(a.out test.c)<br><br></div><div>from the console log i can see another compilation command. to see it does the same i checked manually...</div><div><br></div><div><div>  $ clang -E -DMESSAGE="\"hi there\"" test.c | grep -v ^#</div><div>  void test(const char * const message) { }</div><div>  int main() { test("hi there"); return 0; }</div></div><div><br></div><div>the cmake generated compile_commands.json looks like this:<br><br>  [{<br>    "directory": "/tmp",<br>    "command": "/usr/bin/cc  -DMESSAGE=\"\\\"hi there\\\"\"   -o CMakeFiles/exec.dir/test.c.o   -c /tmp/test.c",<br>    "file": "/tmp/test.c"<br>  }]<br><br></div><div>and it works with the clang tools (clang-check, clang-modernize, clang-tidy) the other working version would be this<br></div><div><br></div><div><div>  [{</div><div>    "directory": "/tmp",</div><div>    "command": "/usr/bin/cc  -DMESSAGE=\\\"hi\\ there\\\"   -o CMakeFiles/a.out.dir/test.c.o   -c /tmp/test.c",</div><div>    "file": "/tmp/test.c"</div><div>  }]</div></div><div><br></div><div>so, the <a href="http://clang.llvm.org/docs/JSONCompilationDatabase.html#format">example</a> is broken, because the SOMEDEF is not JSON+shell escaped, but only JSON.</div><div><br></div><div>what do you think?</div><div><br></div><div>regards,</div><div>Laszlo </div></div>