I’ve been working for quite some time on a daemon mode for CMake in order to make it easier to build advanced tooling for CMake. I made a video about this today:

The general idea is that CMake is started as a long-running process, and can then be communicated with via a JSON protocol.

So, for example, a client sends a request like

{ "type": "code_completion_at", "line": 50, "path": "/home/stephen/dev/src/cmake-browser/CMakeLists.txt", "column": 7 }

and the daemon responds with

{ "completion" : { "commands" : [ "target_compile_definitions" , "target_compile_features" , "target_compile_options" , "target_include_directories" , "target_link_libraries" , "target_sources" ] , "matcher" : "target_" } }

Many more features are implemented such as semantic annotation, variable introspection, contextual help etc, all without the client having to implement it themselves.

Aside from the daemon, I implemented a Qt client making use of all of the features, and a Kate plugin to use the debugging features in that editor. This is the subject of my talk at FOSDEM , which I previewed in Berlin last week.

Come to my talk there to learn more!

Share this: Email

Like this: Like Loading... Related

Tags: CMake, debugging, FOSDEM, KDE, Qt, tooling