如何防止环境变量泄漏到CMakeExternalProject_Add中?

问题描述 投票:0回答:1

在一个CMake项目中,偶尔需要配置另一个CMake项目。这通常使用

ExternalProject_Add
来完成。这样做有两个主要原因。一种是构建一个单独的包并提供给项目,另一种是使用不同的工具链。在前一种情况下,必须小心地将
CMAKE_C_COMPILER
和其他变量转发到外部项目,因为编译器通常应该是相同的。在后一种情况下,通常会省略这些变量或将它们显式指定为其他变量。但是,环境变量(例如
CFLAGS
)只是简单地转发,并且被调用的工具链可能无法理解为包装项目传递的编译器标志。遇到这种情况该如何正确处理呢?通过环境传递编译器标志是很常见的事情。 “别那样做。”在这里不是一个有用的答案。我们不会凭一厢情愿神奇地改变人们调用 CMake 的方式。
ExternalProject_Add
应如何参数化,以便
CFLAGS
环境变量不会被结转?

cmake cross-compiling external-project
1个回答
0
投票

一种碰巧有效但不一定是理想解决方案的方法是将标志显式传递给

ExternalProject_Add
:

"-DCMAKE_C_FLAGS=$ENV{CFLAGS_FOR_BUILD} $ENV{CPPFLAGS_FOR_BUILD}"
"-DCMAKE_CXX_FLAGS=$ENV{CXXFLAGS_FOR_BUILD} $ENV{CPPFLAGS_FOR_BUILD}"

请在提供更好的答案后否决此答案。

© www.soinside.com 2019 - 2024. All rights reserved.