【问题标题】:How can I parameterize an Eclipse generated make file如何参数化 Eclipse 生成的 make 文件
【发布时间】:2012-04-05 22:06:29
【问题描述】:

我有一个配置为生成 make 文件的 Eclipse CDT 项目。

我目前正在 windows 上开发,我的构建服务器正在运行 Linux。

make 文件在我的本地机器上构建良好,但我有两个预先构建的外部依赖项:boost 和 ZeroMQ。这两者都有一个包含目录、一个 lib 目录和一个关联的 dll/so。

如何配置项目,以便生成的 make 文件可以具有不同的 BOOST_HOME 或 ZMQ_HOME 变量,这些变量在 make 时被解析(而不是被烘焙到 make 文件中)。

【问题讨论】:

  • 只是触摸 Makefile 的一种快速而肮脏的替代方法。您可以在项目中使用符号链接,并根据平台更改它们指向的内容。
  • 我需要将其转换为构建服务器的非 Eclipse 环境。 eclipse如何渲染make文件的符号链接?
  • makefile 可能会将符号链接称为项目文件夹层次结构中的文件夹。因此,您可以更改它们在 Linux 中指向的位置,从而获得您想要的效果。
  • enobayram,我正在寻找一种适用于 windows 或 linux(以及 IDE 或 shell)的解决方案。我不确定 Eclipse 符号链接在 Windows 上的作用。
  • 符号链接与eclipse无关,它们基本上是假文件/文件夹,只是指向其他地方的真实文件/文件夹。 Linux 和 Windows(至少 7 个)都支持它们。如果您使用它们指向您可能想要的任何目录,eclipse 甚至不会知道它。它会天真地使用那个假文件夹,实际上它指向每个平台中的正确文件夹。

标签: eclipse makefile eclipse-cdt


【解决方案1】:

CDT 生成的 Makefile 包括以下几行:

-include ../makefile.init
 ...
-include ../makefile.defs
 ...
-include ../makefile.targets

也就是说,您可以添加例如makefile.defs 在项目根目录中控制构建。

JeffV 编辑: 我添加了一个makefile.init:

 BOOST_HOME = C:\code\boost_1_48_0
 ZMQ_HOME = C:\code\zmq\zeromq-2.1.11

在项目设置“构建变量”配置中,我还添加了这些条目:

BOOST_HOME = $(BOOST_HOME)
ZMQ_HOME = $(ZMQ_HOME)

这会导致 eclipse 用 make 文件中的 $(BOOST_HOME) 变量替换我的库中引用的 ${BOOST_HOME} 并包含路径。

这使我可以在每个构建平台上拥有特定于平台的 makefile.init 版本。

【讨论】:

  • 谢谢,您能否详细说明如何覆盖路径变量。
  • @Jeff,类似于 makefile 中的 export PATH := your/path:$(PATH)... 或者,PATH 可以通过 Eclipse 项目属性设置:C/C++ Build -> Environment
  • 我仍然没有得到我需要添加到 makefile.init 的内容以及如何配置 eclipse 以在某个时候使用构建变量呈现 makefile。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2015-10-13
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
相关资源
最近更新 更多