我正在考虑将CMake用于针对微控制器的项目。我发现了如何创建工具链文件并调用cmake -DCMAKE_TOOLCHAIN_FILE=Path/To/Toolchain.cmake
以使CMake进行交叉编译。
但是,我工作的大多数项目也都有必须为主机平台编译的代码。这些通常是单元测试或其他测试工具,它们与将在微控制器上运行的二进制文件共享其代码的大部分。一个罕见的情况可能是一个项目甚至有两个处理器具有不同的指令体系结构,因此需要一个主机编译器和两个不同的交叉编译器。
我希望有一个构建规则。是否可以建立一个我只需要调用cmake /path/to/source && make
的构造,或者是唯一具有多个“root”CMakeList.txt
文件的解决方案,每个文件都针对每个目标?
答案 0 :(得分:2)
每次cmake运行都将针对一个特定的生成器,从而一个平台。
通过为每个平台提供一个CMakeLists文件层次结构,可以实现您的目标。您需要进行一系列cmake .. && make
调用才能构建整个项目。
然后编写一个主CMakeLists,为您执行所有这些单独的构建步骤,例如通过ExternalProject_Add
或使用自定义命令。根据项目的结构,仅使用这种方式构建处理所需的工具并将实际项目的源直接添加到主CMakeLists可能是有意义的。