CMake多个工具链和目标平台

7

我正在将一个项目的构建系统从普通make切换到CMake。该项目应该在不同的嵌入式Linux系统上运行,每个系统都有自己的工具链,并且每个目标也有相当多的不同配置选项(例如不同的预处理器定义和一些包含/排除的源代码)。它还应该在桌面Linux上运行,某些GUI模块必须在Windows上运行。

现在,CMake有其CMAKE_TOOLCHAIN_FILE选项,可用于分离每个嵌入式平台的工具链和编译器特定内容(桌面Linux和Windows不需要这样做)。

我想,除了CMake Wiki中列出的内容外,在工具链文件中放置其他内容并不是一个好主意。

我考虑创建一些可以由cmake gui工具编辑的CMake变量,然后仅使用if / elseif来确定正确的设置。

是否有更好或更优雅的建议?

1个回答

9

我想,与其使用冗长的 if/elseif/else 代码块,不如采用以下方式:

include(flags-${CONFIGURATION_NAME}.cmake)

在我的CMakeLists.txt文件中,每个配置的具体标志只需要在相应的标志文件中列出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接