如何使CMake在单个构建中定位多个平台

时间:2014-08-18 14:16:47

标签: cmake cross-platform

我想以某种方式配置我的CMake项目,以便单个构建执行针对多个平台(在我的情况下,我希望为Linux和Windows构建,每个x86_32和x86_64目标) 。我已经安装并运行了交叉编译工具链,并为每个目标工作构建。

因此,挑战在于以某种方式设置CMake,为每个子构建设置适当的工具链和CMAKE_SYSTEM_…变量。我怎么能这样做?

1 个答案:

答案 0 :(得分:7)

一般来说,这是不可能的。

CMake只允许一次配置单个目标平台。如果您想要定位不同的平台,则需要从头开始重新运行CMake。当工具链的其余部分保持不变时(例如,您无法同时构建x86和x64二进制文件),切换架构时甚至都是如此。

自动执行此操作的正确方法是使用一个封闭的构建脚本,该脚本为每个目标平台调用一次CMake,并对不同的二进制目录执行多个源外构建。这个封闭的脚本也可以用CMake本身编写(ExternalProject module对此很有效),尽管像Python或Bash这样的通用脚本语言可能更适合。

相关问题