使用 CMake 构建 FreeRTOS - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 CMake 构建 FreeRTOS

默认情况下,CMake 将主机操作系统作为目标系统。要将 CMake 用于交叉编译,请提供工具链文件以指定要使用的编译器。您可以在 /tools/cmake/toolchains 中找到一些示例。

如果使用的编译器不同于随 FreeRTOS 提供的编译器,则先编写此工具链文件,然后再使用 CMake 构建 FreeRTOS。在 CMake 读取顶级 CMakeLists.txt 文件之前,还必须设置 CMAKE_TOOLCHAIN_FILE 变量。CMAKE_TOOLCHAIN_FILE 变量指定要使用的编译器,并设置某些 CMake 变量,如系统名称和默认搜索路径。有关使用 CMake 交叉编译的更多信息,请参阅正式 CMake Wiki 中的交叉编译

CMakeLists.txt 和工具链文件必须位于正确的位置。在您使用 CMake 构建 FreeRTOS 之前,请确保已经在本地计算机上设置了 FreeRTOS 目录结构,以便与 GitHub 上的 FreeRTOS 目录结构匹配。有关说明,请参阅 README.md 文件。

构建基于 CMake 的项目

  1. 运行 CMake 为本机构建系统生成构建文件,如 Make 或 Ninja。

    可以使用 CMake 命令行工具CMake GUI,为本机构建系统生成构建文件。

    有关生成 FreeRTOS 构建文件的信息,请参阅生成构建文件(CMake 命令行工具)生成构建文件 (CMake GUI)

  2. 调用本机构建系统,将项目制作为可执行文件。

    有关如何制作 FreeRTOS 构建文件的信息,请参阅从生成的构建文件构建 FreeRTOS

生成构建文件(CMake 命令行工具)

可以使用 CMake 命令行工具 (cmake),从命令行或终端生成 FreeRTOS 构建文件。

要生成编译文件,可运行 cmake。对于 DVENDOR 选项,请指定供应商。对于 DBOARD 选项,请指定主板。对于 DCOMPILER 选项,请指定编译器。使用 S 选项指定源代码的位置。使用 B 选项指定写入所生成文件的位置。

注意

编译器必须包含在系统的 PATH 变量中,或者必须指定编译器的位置。

例如,如果供应商是 Texas Instruments,主板是 CC3220 Launchpad,编译器是 GCC for ARM,那么可以发出以下命令,将源文件从当前目录构建到名为 build 的目录:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build
注意

如果使用的是 Windows,则必须指定本机构建系统,因为 CMake 默认使用 Visual Studio。例如:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build -G Ninja

或者:

cmake -DVENDOR=ti -DBOARD=cc3220_launchpad -DCOMPILER=arm-ti -S . -B build -G "Unix Makefiles"

正则表达式 ${VENDOR}.*${BOARD}.* 用于搜索匹配的主板,因此对于 VENDORBOARD 选项,不必使用完整的供应商和主板名称。在只有单个名称匹配的情况下,部分名称也是可行的。例如,以下命令可从同一源文件生成相同的构建文件:

cmake -DVENDOR=ti -DCOMPILER=arm-ti -S . -B build
cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -S . -B build
cmake -DVENDOR=t -DBOARD=cc -DCOMPILER=arm-ti -S . -B build

如果要使用不在默认目录 cmake/toolchains 中的工具链文件,则可使用 CMAKE_TOOLCHAIN_FILE 选项。例如:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -S . -B build

如果工具链文件未使用编译器的绝对路径,并且编译器未添加到 PATH 环境变量中,那么 CMake 可能无法找到编译器。要确保 CMake 找到工具链文件,可以使用 AFR_TOOLCHAIN_PATH 选项。此选项将搜索指定的工具链目录路径以及 bin 下的工具链子文件夹。例如:

cmake -DBOARD=cc3220 -DCMAKE_TOOLCHAIN_FILE='/path/to/toolchain_file.cmake' -DAFR_TOOLCHAIN_PATH='/path/to/toolchain/' -S . -B build

要启用调试,可将 CMAKE_BUILD_TYPE 设置为 debug。启用此选项后,CMake 将调试标志添加到编译选项,并构建带调试符号的 FreeRTOS。

# Build with debug symbols cmake -DBOARD=cc3220 -DCOMPILER=arm-ti -DCMAKE_BUILD_TYPE=debug -S . -B build

也可以将 CMAKE_BUILD_TYPE 设置为 release,将优化标志添加到编译选项。

生成构建文件 (CMake GUI)

可以使用 CMake GUI 生成 FreeRTOS 构建文件。

使用 CMake GUI 生成构建文件

  1. 从命令行中发出 cmake-gui 以启动 GUI。

  2. 选择 Browse Source (浏览源) 并指定源输入,然后选择 Browse Build (浏览构建) 并指定构建输出。

  3. 选择 Configure (配置),然后在 Specify the build generator for this project (指定此项目的构建生成器) 下,查找并选择构建系统,以用于构建所生成的构建文件。

  4. 选择 Specify toolchain file for cross-compiling (指定用于交叉编译的工具链文件),然后选择 Next (下一步)

  5. 选择工具链文件(例如,/tools/cmake/toolchains/arm-ti.cmake),然后选择 Finish (完成)

    FreeRTOS 的默认配置为模板主板,该主板不提供任何可移植层目标。结果,将显示一个包含消息 的窗口。

  6. GUI 现在应如下所示:

    选择 AFR_BOARD,选择主板,然后选择 Configure (配置)

  7. 选择 Generate (生成)。CMake 生成构建系统文件(例如,makefile 或 ninja 文件),这些文件位于第一步指定的构建目录中。按照下一节中的说明生成二进制映像。

从生成的构建文件构建 FreeRTOS

可以使用本机构建系统构建 FreeRTOS,方法是从输出二进制目录调用构建系统命令。例如,如果构建文件输出目录为 build,并且使用 Make 作为本机构建系统,则可运行以下命令:

cd build make -j4

也可以使用 CMake 命令行工具构建 FreeRTOS。CMake 提供了抽象层用于调用本机构建系统。例如:

cmake --build build_dir

以下是 CMake 命令行工具构建模式的其他一些常见用例:

# Take advantage of CPU cores. cmake --build build_dir --parallel 8
# Build specific targets. cmake --build build_dir --target afr_kernel
# Clean first, then build. cmake --build build_dir --clean-first

有关 CMake 构建模式的更多信息,请参阅 CMake 文档