gpt4 book ai didi

cmake - 将几乎所有构建标志传递给 CMake 中的外部项目

转载 作者:行者123 更新时间:2023-12-03 21:02:53 42 4
gpt4 key购买 nike

是否有一种简洁的方法可以将几乎所有构建标志传递给 CMake 中的外部项目?本质上,我有一个使用 ExternalProject_Add 来下载和编译外部 CMake 项目的项目。在一个特定的平台上,我需要将大多数构建标志(如 CMAKE_OBJCOPY、CMAKE_OBJDUMP、CMAKE_RANLIB 等)修改为系统默认值以外的其他内容。现在,当我为调用 ExternalProject_Add 的父项目执行此操作时,我还想将这些选项传递给外部项目。当然,我可以通过在 ExternalProject_Add 中设置 CMAKE_ARGS 选项来做到这一点,但是有很多标志要复制。真的,我正在寻找一个复制所有标志然后允许我覆盖一些标志的选项。最后要注意的是,由于我使用 ExternalProject_Add 下载文件,因此我一直犹豫是否使用 add_subdirectory,它会复制所有标志,因为我无法提供 URL。

最佳答案

您可以在 cmake 工具链文件中列出您需要的所有标志并传递给 ExternalProject_Add只有一种选择:CMAKE_TOOLCHAIN_FILE .

> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(Foo)

message("SOME_ARG1: ${SOME_ARG1}")
message("SOME_ARG2: ${SOME_ARG2}")

> cat MyToolchain.cmake
set(SOME_ARG1 "arg1")
set(SOME_ARG2 "arg2")

> cmake -H. -B_builds/notoolchain
...
-- Detecting CXX compiler ABI info - done
SOME_ARG1:
SOME_ARG2:
-- Configuring done

> cmake -H. -B_builds/toolchain -DCMAKE_TOOLCHAIN_FILE=MyToolchain.cmake
...
-- Detecting CXX compiler ABI info - done
SOME_ARG1: arg1
SOME_ARG2: arg2
-- Configuring done

关于cmake - 将几乎所有构建标志传递给 CMake 中的外部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204231/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com