如何从 CMake 外部设置 CMAKE_TRY_COMPILE_TARGET_TYPE

How to set CMAKE_TRY_COMPILE_TARGET_TYPE from outside CMake

tl;博士

鉴于我无法编辑的 CMakeList.txt,我可以在配置该文件时将 CMAKE_TRY_COMPILE_TARGET_TYPE 设置为 STATIC_LIBRARY 吗?

理想情况下,我可以通过环境变量来做到这一点,但如果这不可能,将我的值作为命令行参数传递也可以。

详情

我正在尝试构建 Conan profile that will allow me to cross build using the GNU Arm Embedded Toolchain

Conan 提供了一种机制来指定我希望 CMake 使用的编译器二进制文件和编译器 + 链接器标志,但我需要指定 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) 以便 GNU Arm Embedded 通过 CMake 的编译器检查。

为了让我的交叉构建工具链工作,我有两个选择:

  1. 我想要支持交叉构建的每个 CMake 文件都必须检查我们是否正在为嵌入式设备构建,如果是,运行set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)。这很烦人,因为它迫使所有项目都必须考虑嵌入。
  2. 或者,以某种方式将 CMAKE_TRY_COMPILE_TARGET_TYPE 传递给 CMake 而无需编辑 CMakeList.txt

我想做2。

您可以使用 -D 标志获得您正在寻找的功能。

我会尝试这样的事情:cmake -D CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY