关键字:STM32Cube/CMake

1. 前言

STM32CubeMX能够很方便的导出CMake工程。例如,如下图所示在STM32CubeMX

的ToolChain/IDE 中选择Cmake。

CMake工程可以很容易被STM32Cube for Visual Studio Code V3 版本(例如,如下

图所示的Pre-release V3.4.11)打开,编辑,编译以及调试。

但是除了STM32CubeMX生成的文件,还有自己开发的源文件。例如,在根目录下有个

目录名为custom,里面有一些文件,都需要编译。那么,在没有图形界面提供拖拉拽的文件

操作方式的情况下,如何进行CMake源代码添加的操作呢?  

                 

2. STM32CubeMX CMake的设计

STM32CubeMX生成的根目录CMakeLists.txt为用户添加自己的文件预留了相应的空

间。例如,添加额外的头文件路径,源文件,库路径和额外的库。

而且STM32CubeMX对根目录的CMakeLists.txt仅生成一次,可以从CMakeLists.txt

头部的提示佐证这一贴心的设计。也就是对根目录的CMakeLists.txt文件的改动在

STM32CubeMX重新生成同一个CMake工程时不会被覆盖。

3. 直接使用源文件

我们直接根据STM32CubeMX CMake的设计将源文件一个一个列举在 “# Add user

sources here ”那里。例如,直接使用源文件的路径 “./custom/my.c ”。                     

保存,编译,发现没有任何问题。

4. 使用通配符

另外一种方式是使用通配符,适合目录下文件多且不希望手工一个一个添加的情况。这种

方式是使用CMake的file命令去收集符合条件的源文件到一个CMake变量,然后将变量填

写到 target_sources 中。例如:收集所有custom目录下所有c文件到MY_SOURCES变量

中。

然后在target_sources 中使用该变量MY_SOURCES。

同样,保存,编译,发现没有任何问题。

5. 使用目录扫描

相对于使用file命令,一种更好的方式是目录扫描aux_source_directory。它不需要指定

后缀,能够自动扫描一个目录,将所有源代码文件收集到一个变量中。例如,扫描custom目

录将源文件收集到变量SOURCES中。

然后再target_sources 中使用SOURCES变量。

同样,保存,编译,没有发现任何问题。

6. 小结

STM32CubeMX CMake工程用户如果需要添加自己的源文件,可以参考

STM32CubeMX所提供的框架,结合CMake提供的命令,选择其中一种或结合几种方式来

组织CMakeLists.txt 文件,从而达到和图形界面同样简单易用的效果。


意法半导体公司及其子公司 (“ST”)保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐