Our great sponsors
-
TinyXML
TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
ccls
C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
If someone wants a decent example to learn CMake from, I rewrote the tinyxml2 build not so long ago. It's small, but it handles tricky cases regarding distributing both static and shared versions of the library. See here: https://github.com/leethomason/tinyxml2
I also maintain the build system for Halide, but as it's less greenfield, there are some things I would need team buy-in to change. It's also much more complex (building code generators necessarily is). I'm still pretty happy with it, though. See here: https://github.com/halide/Halide
cmake-init might be interesting to you. It does just that with a single command, optionally with Conan or vcpkg integration ready to go.
But I will say that I am mostly happy with either one of the clangd and ccls plugins. The clangd plugin is nicely packaged with a self-installer. The ccls plugin takes a little more work to set up, but it has loads more features. Both are quite good at working with a proper AST. Both build the AST by actually compiling your code with libclang (llvm's compiler core). Both work reliably for me because I am able to provide a compile_commands.json using my project builder (ninja). Nice as it is, it does not update automatically, and I'm not sure I want it to.
But I will say that I am mostly happy with either one of the clangd and ccls plugins. The clangd plugin is nicely packaged with a self-installer. The ccls plugin takes a little more work to set up, but it has loads more features. Both are quite good at working with a proper AST. Both build the AST by actually compiling your code with libclang (llvm's compiler core). Both work reliably for me because I am able to provide a compile_commands.json using my project builder (ninja). Nice as it is, it does not update automatically, and I'm not sure I want it to.