I have followed the directions at this blog which supplements the C ide stuff by Tudho to install rtags and irony (as suggested by Dmitry) and it provides the features I asked for.
I'll expand with a summary of steps I had to take to get it all working on a Mac:
- Install a recent version of the clang compiler with macports (likely optional)
- Set environment variable CC=clang so that the most basic cmake files will call clang
- make and install rtags v2.3 from rtags the repository. Detailed instructions and quick start guide worked but not with Apple XCode's clang (which lacked a link to libclang). follow instructions at the repository to check it works. Not clear to me whether you need to install rtags package in emacs from melpa, but I did that too.
- write a very basic cmake file. If you are a cmake newbie like me you might have a simple C project with no libraries, with a root directory structured like this:
% tree .
│ ├── bar.c
│ └── bar.h
In this case, perhaps the following cmake file will work for you. Call it CMakeLists.txt and put it in the top directory.
file(GLOB_RECURSE SRC_FILES src/*.c)
Put build commands for the project in the directory ./build by calling
cmake -H. -Bbuild
Then export the compile command to a file that rtags will use
cmake build -DCMAKE_EXPORT_COMPILE_COMMANDS=1
And build the project
cmake --build build
Now, to make sure things are working cleanly, clear projects and quit the rdm daemon if it was running with
and restart the daemon
and read that .json file you exported from cmake
rc -J build
You should see output like this:
% rc -J build Cprogrammingglanguage/wtf (hcn ⚡) alejandro
[Server] Compilation database loading...
% [ 3%] 1/35 23:40:23 ~/Google Drive/Work Cloud/... in 211ms. (549 syms, 780 symNames, 28 includes, 17 of 22 files, symbols: 792 of 1445, 1840 cursors, 21 queried 86ms) (37/111/49ms). (priority 0)
[ 6%] 2/35 23:40:24 ~/Google Drive/Work Cloud/.../code/main/src/inrflow/reporting.c in 226ms. (1354 syms, 521 symNames, 15 includes, 6 of 87 files, symbols: 1714 of 4676, 7220 cursors, 5 queried 2ms) (119/61/25ms). (priority 0)
Note the following pitfall: can't have spaces in the path to the project. I worked around this by symlinking to the project folder from a space-less path.
Now you are finally able to start following the rest of the instructions in 1 about configuring
company-rtags, rtags + helm,
cmake-ide, which mostly follows the documentation for each package.
I tend to fumble through these things and would like to help other users, so constructive comments are welcome.