In “From llama.vim to Qt Creator using AI” I showed how I converted the llama.vim source code to a Qt Creator code completion plugin. Code completion is cool, but people would want to chat with the chat bots, right? My rough idea was: Get the markdown text from the model Parse it with md4c and generate html Display the html with litehtml Here is the gpt-oss 20B response to this prompt: write me a…
On Friday 8th of August 2025 I was a bit frustrated with the lack of AI assistant support with Qt Creator! :rage: Previously I only used GitHub Copilot with Qt Creator, but I didn’t like the idea of the LLM not running locally, running somewhere in the cloud. That week I tested gpt-oss , Codestral , and Qwen3 locally on my Mac Studio M2 Ultra, with the task of changing some conditional CMake code…
In November 2022 while recovering from a Covid infection I found a Lenovo ThinkPad X13s on ebay.com for 600$. It had 16GB of RAM, 512GB of SSD, and a Qualcomm 8cx Gen3 CPU. These stats were all better than my previous Samsung Galaxy Book Go 5G laptop. The 13.3” display would be a bit less than the 14” display that Samsung had. But in contrast had the ability to expand the storage with a M.2 SSD…
For the CMake presets feature presentation in Qt Creator 9 I needed a cross platform Windows and Linux screencast. My Windows Arm64 laptop was the perfect platform for the use case of registering a CMake preset with a self built Qt. Quickly I found out that I only had one option to run Qt Creator as a Linux application, and that’s via Ubuntu 22.04 running under Windows Subsystem For Linux GUI…
We all know the Arm CPU architecture from smartphones, which have a long battery life and passive cooling. Apple has shown with the M1/2 laptops that you can have a laptop that kicks ass with an Arm CPU. In November 2021 I had a look to see if there was something like that for Windows. I found a handful of models. Microsoft Surface Pro X, Lenovo Flex 5G, Acer Spin 7 at prices between 1000 - 1500$,…
In my previous post Using GitHub Actions with C++ and CMake I have provided a GitHub Actions yaml configuration file for C++ projects using CMake. Building a project on GitHub Actions means always a build from scratch, for any given change, big or small. This takes time and wastes resources unnecessarily. GitHub provides a way of caching dependencies to speed up workflows . The total size of…
In this post I am going to provide a GitHub Actions configuration yaml file for C++ projects using CMake. GitHub Actions is a CI/CD infrastructure provided by GitHub. GitHub Actions currently offers the following virtual machines (runners) : Virtual environment YAML workflow label Windows Server 2019 windows-latest Ubuntu 18.04 ubuntu-latest or ubuntu-18.04 Ubuntu 16.04 ubuntu-16.04 macOS Catalina…
Coming from other build systems to CMake one will quickly learn that CMake can build only one configuration at a time. In practice you need to set up multiple build directories and configure/build with CMake for each and every one. Autotools can do static and shared builds of libraries. For CMake most of the project would do a static build, then a shared build by setting the CMake variable…
In this article I’m going to talk about building a C++ library with CMake, but it won’t be a CMake tutorial. Let’s say you have a C++ library which depends upon a few open source libraries, which have a CMake project structure, but not necessarily done by the book (which means that they get only get built, and not deployed / installed) Your library will include tests (unit-tests / integration…
In this article I am revisting an article from three years ago: “Speeding up libclang on Windows” , in which I was having a look at how the experimental Clang Code Model was handling a particular source code file. With the help of Profile Guided Optimization I was able to go down from 10 seconds to 6 seconds . In the meantime the Clang Code Model has been enabled by default in Qt Creator 4.7.…
CMake has for single configuration configurators the following build types (configuration) : Empty (Qt Creator wrongly refers to this as “Default”) Debug Release RelWithDebInfo – Release with debug information, needed for profiling / post mortem debugging MinSizeRel – Release optimized for size, and not for speed. If we have a look at CMake’s Modules/Compiler/GNU.cmake we can see: # Initial…
At the end of October 2018 on the Qt development mailing list it was announced that CMake was chosen as the build system (generator) for building Qt6. That also meant that The Qt Company will gradually stop investing in their in house Qbs build system. I personally think is a good idea to have major C++ projects like Boost ( July 2017 switch announcement! ), LLVM/Clang, and now Qt to use CMake as…
At the beginning of this year Bits’n’Bites wrote an article named Faster C++ builds , in which it’s being described how you can accelerate building LLVM using ninja, using a cache etc. The following excerpt caught my eye: For most developers, the time it takes to run CMake is not really an issue since you do it very seldom. However, you should be aware that for CI build slaves in particular, CMake…
It is common for IT companies (at least in Germany, automotive field) to use Ubuntu Linux LTS in a VirtualBox on Windows or Mac hosts. This way the employee can use Microsoft Outlook / Office, Microsoft Skype, Cisco Spark, or other proprietary collaboration tools, and at the same time use the supplied virtual machine for development. By default VirtualBox doesn’t configure any 3D acceleration or…
For those familiar with languages like Java, and C#, something like NullPointerException shouldn’t come as a surprise. But what about C++? C++ also has exceptions, right? In C++ reading or writing at address zero is an access violation. By default an access violation will result in the immediate termination of the program. What else results in immediate termination of the program? Division by…
In this post I will talk about copying files. I will read one file in chunks of 1MB and write it to another file. C++ provides three cross platform APIs for I/O (input/output): C FILE API (fopen, fread, fwrite) C++ API (std::ifstream, std::ofstream) POSIX API (open, read, write) The POSIX API requires a bit of #ifdef-ing to get it working cross platform, but it’s not that scary. Reading and…
In this post I will be talking about P0267R0: A Proposal to Add 2D Graphics Rendering and Display to C++ . This proposal will be discussed next week at the next ISO C++ Standardization meeting in Jacksonville. P0267R0 comes out of C++’s SG13 HMI: Development of new proposals in selected human-machine interaction such as low-level graphics/pointing I/O primitives. SG13 was created by Herb Sutter…
In this article I will tackle libclang’s speed on Windows, in particular Qt Creator’s clang code model. Qt Creator 3.6.0 fixed the following bug: QTCREATORBUG-15365: Clang Model: code completion speed regression . The bug report contains information on how to enable Qt Creator’s clang code model statistics. This is done by setting this environment variable:…
In this article I will have a look on how to get started with Google Test libraries on Windows using Qt Creator for both MinGW and Visual C++. I used the plural for Google Test libraries because there is Google Test – Google’s C++ test framework and also Google Mock – Google’s C++ mocking framework. They both are hosted on a single location on github . Unfortunately the 2015 migration from Google…
Having moved my blog to a static blogging engine means that now I have to upload the generated blog html files to on a server. Octopress recommends deoploying using Rsync via SSH. Since I do my hacking on a Windows machine and I use Total Commander for file management I thought I would give Total Commander’s SFTP plugin a try. I like to think that I am power user when it comes to Total Commander,…