Hi Seonghyun,
I have been using ccls + Visual Studio Code on a Chromium-based codebase for quite some time. My development enviroment is Windows though, so if you're also using Windows then I might be of help to you.
Anyway since setting up ccls took me like a week of various troubleshooting, I can offer you some general pointers (not OS-dependant):
* Before running emacs, you can try indexing everything by running ccls -index=[folder to chromium] -v=1. This will generate an initial cache, and also prints as much logs as possible that can help you.
* The way ccls indexes a C++ source file is: it takes the corresponsing compilation command in compile_commands.json, then strips out the path to Chromium's clang (at the beginning), then passes all the remaining flags to the clang compiler linked to ccls. As such, there might be flags that works with Chromium's clang but cause errors with ccls' clang. To determine any offending flags, grab a random compilation command, then replace the path to Chromium's clang with the path to ccls' clang. The path to ccls' clang depends on how you build it, if you build ccls with system clang then it's the path to system clang, if you build ccls with a custom built clang then it's the path to the custom built clang. After replacing, try to run the command in a terminal. If it fails then clang will tell you what went wrong and then you can figure out what to do next. Rinse and repeat until clang doesn't complain anymore. Some flags which may cause problems are "-DCR_CLANG_REVISION", "-Xclang" and flags related to precompiled headers.
Hope this can help you. If you still have any problems then it might be wise to post the ccls -index log here so I can take a look.