如何从CMake外部设置CMAKE_TRY_COMPILE_TARGET_TYPE

时间:2019-03-06 14:57:08

标签: c++ cmake conan

tl; dr

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

理想情况下,我可以通过环境变量来执行此操作,但是如果不可能,那么将我的值作为命令行参数传递也是可以的。

详细信息

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

柯南提供了一种机制,用于指定我希望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。

1 个答案:

答案 0 :(得分:2)

您可以使用-D标志来获得所需的功能。

我会尝试这样的操作:cmake -D CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY