ysa*_*sap 1 eclipse makefile build eclipse-cdt environment-variables
使用 ARM DS-5 环境,基于 Eclipse 4.3.2,我定义了一个 C 项目并使用 Makefile 来构建它。Makefile 包含一些模块选择变量,它们被设置为Y或N取决于我们是否想要包含模块。
我正在尝试从项目设置中设置这些变量。因此,我使用以下构造在 Makefile 中有一个默认设置:
Module_1 ?= Y
Module_2 ?= Y
Run Code Online (Sandbox Code Playgroud)
现在,我想添加一个Module_1设置为Yor的项目变量N。碰巧下面有Build Variables和Environment变量C/C++ Build。当我添加Module_1 N到Environment变量时,它会覆盖默认设置。但是,当我在其中执行相同操作时,Build Variables它没有任何效果。
这两种类型的变量有什么区别?
据我所理解:
构建变量只能在 Eclipse 中访问。它们可能会影响其他 Eclipse 组件。您还可以在 Eclipse make 目标中引用这些变量,例如:
make ${name_of_variable} (注意大括号)
其中“name_of_variable”将在 Eclipse 的“Build Variables”菜单中声明。这些变量可以作为参数传递给外部工具,但它们不是这些工具的 shell 环境的一部分。
可以从构建过程中启动的外部工具访问环境变量(例如 GNU make:如果您在 Eclipse 的“环境变量”中声明“env_variable”,则可以使用语法$(env_variable)(注意括号)在 makefile 中使用它)。它们成为外部工具的 shell 环境的一部分。请注意,它们还可以用作 Eclipse 中的构建变量。此外,您可以在环境变量的声明中调用构建变量,例如my_env_var = ${my_build_var},反之亦然。
误导点是,当您在 Eclipse 的“构建变量”配置页面中勾选“显示系统变量”时,您会看到 Eclipse IDE 本身的环境变量,以及您在 Eclipse 中定义的环境变量。
我不是 Eclipse 的开发人员,所以我无法证明上述行为的理由。我怀疑这样做的目的是避免仅对 IDE 内部有用的变量与应该传播到外部工具环境的变量之间发生冲突。我更希望在 Eclipse 中有一个变量类型,并且可以选择是否导出它们(例如,通过勾选复选框“导出”)。这会更有意义。
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |