2

tl;博士

给定一个CMakeList.txt我无法编辑的文件,我CMAKE_TRY_COMPILE_TARGET_TYPE可以STATIC_LIBRARY在配置该文件时设置为吗?

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

细节

我正在尝试构建一个柯南配置文件,允许我使用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。

4

1 回答 1

2

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

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

于 2019-03-06T15:20:55.200 回答