我有两个用于不同体系结构的toolchain.cmake文件。有什么办法可以同时在CMakeLists.txt文件中调用它们,或者我还是必须像往常一样分别调用它们。我的文件即 toolchain_a.cmake和toolchain_b.cmake
我试图在if语句中使用OSX_ARCHITECTURES变量,但是没有按预期工作。
答案 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