如何从 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 的编译器检查。
为了让我的交叉构建工具链工作,我有两个选择:
- 我想要支持交叉构建的每个 CMake 文件都必须检查我们是否正在为嵌入式设备构建,如果是,运行
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
。这很烦人,因为它迫使所有项目都必须考虑嵌入。
- 或者,以某种方式将
CMAKE_TRY_COMPILE_TARGET_TYPE
传递给 CMake 而无需编辑 CMakeList.txt
。
我想做2。
您可以使用 -D
标志获得您正在寻找的功能。
我会尝试这样的事情:cmake -D CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
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 的编译器检查。
为了让我的交叉构建工具链工作,我有两个选择:
- 我想要支持交叉构建的每个 CMake 文件都必须检查我们是否正在为嵌入式设备构建,如果是,运行
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
。这很烦人,因为它迫使所有项目都必须考虑嵌入。 - 或者,以某种方式将
CMAKE_TRY_COMPILE_TARGET_TYPE
传递给 CMake 而无需编辑CMakeList.txt
。
我想做2。
您可以使用 -D
标志获得您正在寻找的功能。
我会尝试这样的事情:cmake -D CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY