如何在CMakeLists.txt中调用多个toolchain.cmake文件

时间:2019-06-03 22:49:43

标签: cmake

我有两个用于不同体系结构的toolchain.cmake文件。有什么办法可以同时在CMakeLists.txt文件中调用它们,或者我还是必须像往常一样分别调用它们。我的文件即 toolchain_a.cmake和toolchain_b.cmake

我试图在if语句中使用OSX_ARCHITECTURES变量,但是没有按预期工作。

1 个答案:

答案 0 :(得分:0)

您可能有一个CMakeLists.txt模块,其中包含ExternalProject模块,其中添加了两个项目。每个工具链一个。

所有这些都可以使用“ SuperBuild”范例从单个CMakeLists.txt完成。

简而言之,它是这样的:

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