2

我正在考虑将 CMake 用于针对微控制器的项目。我发现了如何创建工具链文件并调用cmake -DCMAKE_TOOLCHAIN_FILE=Path/To/Toolchain.cmake以使 CMake 进行交叉编译。

然而,我从事的大多数项目也有必须为主机平台编译的代码。这些通常是单元测试或其他测试工具,它们与将在微控制器上运行的二进制文件共享大部分代码。一个罕见的情况可能是一个项目甚至有两个具有不同指令架构的处理器,因此需要一个主机编译器和两个不同的交叉编译器。

我想要一个可以统治所有这些的构建。是否有可能有一个我只需要调用的构造cmake /path/to/source && make,或者是唯一具有多个“根”CMakeList.txt文件的解决方案,每个文件都针对每个目标?

4

1 回答 1

2

每个 cmake 运行将针对一个特定的生成器,因此将针对一个平台。

您可以通过为每个平台设置一个层次结构的 CMakeLists 文件来实现您想要的。您需要达到一个点,即进行连续cmake .. && make调用将构建整个项目。

然后编写一个主 CMakeLists,为您执行所有这些单独的构建步骤,例如通过ExternalProject_Add或使用自定义命令。根据您项目的结构,以这种方式仅处理构建所需的工具并将实际项目的源代码直接添加到主 CMakeLists 可能是有意义的。

于 2013-09-20T07:38:12.463 回答