Вы можете иметь CMakeLists.txt
, включая модуль ExternalProject
, добавляющий два проекта.Один для каждой цепочки инструментов.
Все это может быть сделано из одного CMakeLists.txt
с использованием парадигмы "SuperBuild".
В двух словах, это работает так:
cmake_minimum_required(VERSION 3.14)
project(Awesome)
option(Awesome_SUPERBUILD "Cross-compile Awesome for each toolchain" ON)
include(ExternalProject)
if(Awesome_SUPERBUILD)
ExternalProject_Add(Awesome-ToolchainA
SOURCE_DIR ${CMAKE_SOURCE_DIR}
BINARY_DIR ${CMAKE_BINARY_DIR}/ToolchainA-build
CMAKE_CACHE_ARGS
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_SOURCE_DIR}/toolchain_a.cmake
-DAwesome_SUPERBUILD:BOOL=0
INSTALL_COMMAND ""
)
ExternalProject_Add(Awesome-ToolchainB
SOURCE_DIR ${CMAKE_SOURCE_DIR}
BINARY_DIR ${CMAKE_BINARY_DIR}/ToolchainB-build
CMAKE_CACHE_ARGS
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_SOURCE_DIR}/toolchain_b.cmake
-DAwesome_SUPERBUILD:BOOL=0
INSTALL_COMMAND ""
)
return()
endif()
# Below is the CMake code of the project to cross-compile