CMake多个工具链和目标平台

tre*_*nki 5 c cross-platform makefile multiplatform cmake

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

现在,CMake有其CMAKE_TOOLCHAIN_FILE选择可用于分解每个嵌入式平台的工具链和编译器特定的东西(桌面Linux和Windows不应该需要).

我想把除了CMake Wiki上列出的东西放在工具链文件中的东西不是一个好主意.

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

有没有人有更好或更优雅的建议?

tre*_*nki 7

我想,而不是使用if/elseif/else我可以简单的长块

include(flags-${CONFIGURATION_NAME}.cmake)
Run Code Online (Sandbox Code Playgroud)

在我的CMakeLists.txt中,每个配置的特定标志将简单地列在相应的标志文件中.