2012-03-21 69 views
4

我有一个配置为生成make文件的Eclipse CDT项目。如何参数化Eclipse生成的make文件

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

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

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

+0

只是触摸Makefile的一个快速和肮脏的替代方案。您可以在项目中使用符号链接,并根据平台更改它们指向的内容。 – enobayram 2012-03-21 11:52:34

+0

我需要这个转换为构建服务器的非eclipse环境。 eclipse如何渲染make文件的符号链接? – JeffV 2012-03-21 16:12:12

+0

makefile可能会将符号链接称为项目文件夹层次结构中的文件夹。所以你可以改变他们在Linux中指向的地方,获得你想要的效果。 – enobayram 2012-03-21 17:21:29

回答

5

生成文件由CDT产生包括下列行:

-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) 

导致食来代替$ {BOOST_HOME}它是我的lib中的引用,包含路径,在make文件中带有$(BOOST_HOME)变量。

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

+0

谢谢,你能否详细说明如何覆盖路径变量。 – JeffV 2012-03-21 11:59:52

+0

@Jeff,就像makefile中的'export PATH:= your/path:$(PATH)'...或者,可以通过Eclipse项目属性设置PATH:C/C++ Build - >环境 – 2012-03-21 12:23:19

+0

我还在没有得到我需要添加到makefile.init的内容以及如何配置eclipse以在某个时刻使用构建变量渲染makefile。 – JeffV 2012-03-21 16:14:58