<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>CMake on STM32 on Pierre Gradot</title>
		<link>https://gradot.dev/blog/series/cmake-on-stm32/</link>
		<description>Recent content in CMake on STM32 on Pierre Gradot</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 18 Mar 2024 20:00:00 +0100</lastBuildDate>
		
			<atom:link href="https://gradot.dev/blog/series/cmake-on-stm32/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>CMake on STM32 | Episode 8: building with Docker</title>
				<link>https://gradot.dev/blog/posts/2024/cmake-on-stm32-docker/</link>
				<pubDate>Mon, 18 Mar 2024 20:00:00 +0100</pubDate>
				<guid>https://gradot.dev/blog/posts/2024/cmake-on-stm32-docker/</guid>
				<description>&lt;p&gt;In this episode, we will use Docker to set up and manage our build environment.&lt;/p&gt;&#xA;&lt;p&gt;The embedded world doesn&amp;rsquo;t always embrace the latest software development techniques. I acknowledged this in the previous &lt;a href=&#34;https://gradot.dev/blog/posts/2024/cmake-on-stm32-unit-tests/&#34;&gt;episode about unit tests&lt;/a&gt;. Four years ago, when I started this series, I was totally unaware of Docker for instance. Since then, I have used it for non-embedded projects and I think it could have solved some issues I encountered in the past. I would like to share my experience and demonstrate that it can perfectly fit in an MCU project.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 7: unit tests</title>
				<link>https://gradot.dev/blog/posts/2024/cmake-on-stm32-unit-tests/</link>
				<pubDate>Thu, 15 Feb 2024 20:00:00 +0100</pubDate>
				<guid>https://gradot.dev/blog/posts/2024/cmake-on-stm32-unit-tests/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s been almost four years, and it&amp;rsquo;s about time to revive this series on CMake and STM32 (or MCUs in general, STM32 just serves as a tangible example).&lt;/p&gt;&#xA;&lt;p&gt;Funny enough, I&amp;rsquo;m not working with microcontrollers anymore&amp;hellip; This is a very recent change in my professional career, even if I think I will probably work again with MCUs sooner or later. However, I still use CMake to build C++ projects! The real reason to resume this series is my desire to write an article about Docker for builds. In 2020, I had never used Docker at all. Today, I use it very often, and I&amp;rsquo;m convinced it could have solved some build and environment issues back then.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 6: add C&#43;&#43; specific compiler options</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-cpp-options/</link>
				<pubDate>Mon, 04 May 2020 23:28:52 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-cpp-options/</guid>
				<description>&lt;p&gt;In &lt;a href=&#34;https://gradot.dev/blog/posts/2020/cmake-on-stm32-cpp-ready/&#34;&gt;episode 4, we started to use C++&lt;/a&gt; but we didn&amp;rsquo;t (*) add C++ specific compiler options. In this episode we will see how to do this. Because guess what: C++ and C are different languages and compiling C code with C++ specific options may &lt;em&gt;not&lt;/em&gt; be a good idea 😄&lt;/p&gt;&#xA;&lt;h2 id=&#34;generator-expression&#34;&gt;Generator expression&lt;/h2&gt;&#xA;&lt;p&gt;(*) This isn&amp;rsquo;t completely true: to fix a linker error I suggested to add &lt;code&gt;-fno-exceptions&lt;/code&gt; and this is clearly a C++ specific option. I didn&amp;rsquo;t show any CMake code but if you tried on your computer, I suppose you simply added it like this and compilation went fine:&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 5: additional clean files</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-clean-files/</link>
				<pubDate>Sat, 02 May 2020 17:54:45 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-clean-files/</guid>
				<description>&lt;p&gt;In this episode, we will see that some files generated during the build are not deleted during the clean process and we will solve this issue with CMake, of course.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-cleaned&#34;&gt;What is cleaned?&lt;/h2&gt;&#xA;&lt;p&gt;Once the build is done, we can have a look at the content of the output directory:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;λ &lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;D:&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;make_stm32&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;make-build-debug&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;λ cmake --build .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 76%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building C object CMakeFiles/nucleo-f413zh.out.dir/BSP/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 80%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building C object CMakeFiles/nucleo-f413zh.out.dir/BSP/Src/main.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 84%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building C object CMakeFiles/nucleo-f413zh.out.dir/BSP/Src/stm32f4xx_hal_msp.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 88%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building C object CMakeFiles/nucleo-f413zh.out.dir/BSP/Src/stm32f4xx_it.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 92%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building C object CMakeFiles/nucleo-f413zh.out.dir/BSP/Src/system_stm32f4xx.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; 96%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Building ASM object CMakeFiles/nucleo-f413zh.out.dir/BSP/startup_stm32f413xx.s.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;100%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Linking C executable nucleo-f413zh.out&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   text    data     bss     dec     hex filename&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;m&#34;&gt;7564&lt;/span&gt;      &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;    &lt;span class=&#34;m&#34;&gt;2668&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;10252&lt;/span&gt;    280c nucleo-f413zh.out&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mingw32-make&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;2&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: Leaving directory &lt;span class=&#34;s1&#34;&gt;&amp;#39;D:/cmake_stm32/cmake-build-debug&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;100%&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Built target nucleo-f413zh.out&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mingw32-make&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: Leaving directory &lt;span class=&#34;s1&#34;&gt;&amp;#39;D:/cmake_stm32/cmake-build-debug&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;λ ls -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;632&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;1427&lt;/span&gt; avr.  &lt;span class=&#34;m&#34;&gt;29&lt;/span&gt; 12:17 cmake_install.cmake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;53118&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; 12:26 CMakeCache.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;drwxr-xr-x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;      &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 CMakeFiles/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;42893&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; 12:42 Makefile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;7584&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 nucleo-f413zh.bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;11154&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; 12:42 nucleo-f413zh.cbp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;21433&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 nucleo-f413zh.hex&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;203655&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 nucleo-f413zh.map&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;289884&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 nucleo-f413zh.out&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;λ ls -l CMakeFiles&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;ucleo-f413zh.out.dir&lt;span class=&#34;se&#34;&gt;\B&lt;/span&gt;SP&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;rc&lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;total &lt;span class=&#34;m&#34;&gt;52&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;18416&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 main.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;14956&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 stm32f4xx_hal_msp.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;6224&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 stm32f4xx_it.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-rw-r--r-- &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; z19100018 &lt;span class=&#34;m&#34;&gt;1049089&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;7916&lt;/span&gt; mai    &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; 15:13 system_stm32f4xx.c.obj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Yes, it was 15:13 when I built the project. Let&amp;rsquo;s clean it and see what files are still here and what files have been deleted.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 4: get ready for C&#43;&#43;</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-cpp-ready/</link>
				<pubDate>Sat, 02 May 2020 17:49:43 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-cpp-ready/</guid>
				<description>&lt;p&gt;I have been using C++ for the last 4 years&amp;hellip; there is no way I get back to C! This episode is not about explaining why I think C++ is better than C. It is simply about running C++ on STM32 with CMake. By the way: we will make LEDs blink!&lt;/p&gt;&#xA;&lt;h2 id=&#34;adding-user-code-in-code-generated-by-stm32cubemx&#34;&gt;Adding user code in code generated by STM32CubeMX&lt;/h2&gt;&#xA;&lt;p&gt;If we change the MCU configuration with STM32CubeMX and generate the code again, the previous files are overwritten. How can we create our own program if everything is erased each time the code is generated?&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 3: handle warnings in 3rd party files</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-warnings/</link>
				<pubDate>Fri, 01 May 2020 13:23:57 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-warnings/</guid>
				<description>&lt;p&gt;Something funny happens sometimes with 3rd party files: they generate warnings when compiled with your project settings. If you have quality indicators about the build health (automatically updated by Jenkins maybe), this is quite annoying. If you compile with an option such as &lt;a href=&#34;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html&#34;&gt;&lt;code&gt;-Werror&lt;/code&gt;&lt;/a&gt; to treat warnings as errors, this is a blocking issue.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will add compiler options that will raise warnings in ST&amp;rsquo;s generated files and we will ask CMake to suppress these warnings but only for these files.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 2: build with CLion</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-clion/</link>
				<pubDate>Wed, 29 Apr 2020 19:21:36 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-clion/</guid>
				<description>&lt;p&gt;In this article, you will learn how to build a CMake project for STM32 and download the software to the MCU with &lt;a href=&#34;https://www.jetbrains.com/clion/&#34;&gt;CLion, JetBrains&amp;rsquo; IDE for C &amp;amp; C++&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In &lt;a href=&#34;https://gradot.dev/blog/posts/2020/cmake-on-stm32-beginning/&#34;&gt;episode 1&lt;/a&gt;, we got a BSP along with the &lt;code&gt;CMakeLists.txt&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://gradot.dev/blog/posts/2020/cmake-on-stm32-clion/01-alt-text.png&#34; alt=&#34;Alt Text&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Finally, we built the software from the command line.&lt;/p&gt;&#xA;&lt;p&gt;To be honest, in my everyday life, I don&amp;rsquo;t use the command line. I use instead CLion because it is much more comfortable&amp;hellip; Let&amp;rsquo;s try it!&lt;/p&gt;</description>
			</item>
			<item>
				<title>CMake on STM32 | Episode 1: the beginning</title>
				<link>https://gradot.dev/blog/posts/2020/cmake-on-stm32-beginning/</link>
				<pubDate>Tue, 28 Apr 2020 17:35:25 +0200</pubDate>
				<guid>https://gradot.dev/blog/posts/2020/cmake-on-stm32-beginning/</guid>
				<description>&lt;p&gt;This article is the first of a series dealing with &lt;a href=&#34;https://cmake.org/&#34;&gt;CMake&lt;/a&gt; and &lt;a href=&#34;https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html&#34;&gt;STM32 microcontrollers&lt;/a&gt;. In fact, it is more about CMake on MCUs but I had to pick one for the examples.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-cmake-why-stm32&#34;&gt;Why CMake? Why STM32?&lt;/h2&gt;&#xA;&lt;p&gt;CMake is becoming the &lt;em&gt;de-facto&lt;/em&gt; standard tool to build C and C++ projects. It is becoming so popular that it will probably be &lt;a href=&#34;https://www.qt.io/blog/2019/08/07/technical-vision-qt-6&#34;&gt;the build tool for Qt6&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;For Qt 6, we aim to use CMake as a standard 3rd party build system to build Qt itself. CMake is by far the most widely used build system in the C++ world, and better integration with it is sorely needed.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
			</item>
	</channel>
</rss>
