Eclipse 的构建变量是什么?它们与环境变量有何不同?
What are Eclipse's Build Variables and how do they differ from the Environment Variables?
使用ARM DS-5 环境,基于Eclipse 4.3.2,我定义了一个C 项目并使用Makefile 来构建它。 Makefile 包含一些模块选择变量,这些变量设置为 Y
或 N
取决于我们是否要包含该模块。
我正在尝试从项目设置中设置这些变量。因此,我使用以下结构在 Makefile 中进行默认设置:
Module_1 ?= Y
Module_2 ?= Y
现在,我想添加一个项目变量 Module_1
设置为 Y
或 N
。正好C/C++ Build
下有Build Variables
和Environment
变量。当我将 Module_1
N
添加到 Environment
变量时,它会覆盖默认设置。但是,当我在 Build Variables
中执行相同操作时,它没有任何效果。
这两种变量有什么区别?
据我了解:
构建变量只能在 Eclipse 中访问。它们可能会影响其他 Eclipse 组件。您还可以在 Eclipse make 目标中引用这些变量,例如:
make ${name_of_variable}
(注意大括号)
其中 "name_of_variable" 将在 Eclipse 的 "Build Variables" 菜单中声明。这些变量可以作为参数传递给外部工具,但它们不是这些工具的 shell 环境的一部分。
可以从构建过程中启动的外部工具访问环境变量(例如 GNU make:如果在 Eclipse 的 "Environment Variables" 中声明 "env_variable",则可以使用它在 makefile 中使用语法 $(env_variable)
(注意括号))。它们成为外部工具 shell 环境的一部分。请注意,它们也可以用作 Eclipse 中的构建变量。此外,您可以在环境变量声明中调用构建变量,例如my_env_var = ${my_build_var}
反之亦然。
误导点是当你在Eclipse的"Build variables"配置页中勾选"Show system variables"时,看到的是Eclipse本身的环境变量IDE,再加上您在 Eclipse 中定义。
我不是 Eclipse 的开发人员,所以我无法证明上述行为的合理性。我怀疑其目的是避免仅对 IDE 内部有用的变量与应该传播到外部工具环境的变量之间发生冲突。我宁愿在 Eclipse 中有一个单一的变量类型,并选择是否导出它们(例如通过勾选复选框 "export")。这会更有意义。
使用ARM DS-5 环境,基于Eclipse 4.3.2,我定义了一个C 项目并使用Makefile 来构建它。 Makefile 包含一些模块选择变量,这些变量设置为 Y
或 N
取决于我们是否要包含该模块。
我正在尝试从项目设置中设置这些变量。因此,我使用以下结构在 Makefile 中进行默认设置:
Module_1 ?= Y
Module_2 ?= Y
现在,我想添加一个项目变量 Module_1
设置为 Y
或 N
。正好C/C++ Build
下有Build Variables
和Environment
变量。当我将 Module_1
N
添加到 Environment
变量时,它会覆盖默认设置。但是,当我在 Build Variables
中执行相同操作时,它没有任何效果。
这两种变量有什么区别?
据我了解:
构建变量只能在 Eclipse 中访问。它们可能会影响其他 Eclipse 组件。您还可以在 Eclipse make 目标中引用这些变量,例如:
make ${name_of_variable}
(注意大括号)其中 "name_of_variable" 将在 Eclipse 的 "Build Variables" 菜单中声明。这些变量可以作为参数传递给外部工具,但它们不是这些工具的 shell 环境的一部分。
可以从构建过程中启动的外部工具访问环境变量(例如 GNU make:如果在 Eclipse 的 "Environment Variables" 中声明 "env_variable",则可以使用它在 makefile 中使用语法
$(env_variable)
(注意括号))。它们成为外部工具 shell 环境的一部分。请注意,它们也可以用作 Eclipse 中的构建变量。此外,您可以在环境变量声明中调用构建变量,例如my_env_var = ${my_build_var}
反之亦然。
误导点是当你在Eclipse的"Build variables"配置页中勾选"Show system variables"时,看到的是Eclipse本身的环境变量IDE,再加上您在 Eclipse 中定义。
我不是 Eclipse 的开发人员,所以我无法证明上述行为的合理性。我怀疑其目的是避免仅对 IDE 内部有用的变量与应该传播到外部工具环境的变量之间发生冲突。我宁愿在 Eclipse 中有一个单一的变量类型,并选择是否导出它们(例如通过勾选复选框 "export")。这会更有意义。