我使用Eclipse IDE开发C / C ++。 Eclipse还会生成一个我不想编辑的makefile,因为它只会被覆盖。
我想在Hudson中使用该makefile进行夜间构建。
如何将在IDE的项目文件中生成的#defines传递给makefile? (为什么Eclipse没有将它们包含在生成的makefile中?)
我实际上曾经想过这一次,然后不小心覆盖了它:-(但至少我知道它可以做到......
答案 0 :(得分:29)
如果从命令行运行make,请使用
make CPPFLAGS=-DFOO
将为所有编辑添加-DFOO。另请参阅制作手册中的CFLAGS,CXXFLAGS,LDFLAGS。
答案 1 :(得分:2)
你可以编写一个小程序来包含头文件并编写一个你include
in the main makefile(需要GNU make)的makefile片段。
这是一个相当丑陋的解决方案,需要相当多的手工hackery。更优雅的是解析项目文件并编写makefile片段。
答案 2 :(得分:1)
对于GCC使用-D define。
Make不允许这样做。通常,您只需添加另一个make规则来添加定义。例如'make release'vs'make debug'。作为makefile创建者,您可以创建两个规则并在make文件中使用define。现在,如果Eclipse没有将定义文件放入makefile中,我会说Eclipse已经坏了。
答案 3 :(得分:1)
如果你正在使用autotools,另一个选择是有2个目录'bin / debug'和'bin / release'。
# Simple bootstrap script.
# Remove previously generated filed and call autoreconf.
# At the end configure 2 separate builds.
echo "Setting up Debug configuration: bin/debug"
../../configure CXXFLAGS="-g3 -O0 -DDEBUG=1"
echo "Setting up Release configuration: bin/release"
cd bin/release/
../../configure CXXFLAGS="-O2"
设置Eclipse。打开项目的属性(Project-> Properties-> C / C ++ Build-> Builder Settings)并将Build Location-> Build Directory设置为
${workspace_loc:/helloworld/bin/debug}
将'helloworld'替换为项目相对于工作空间的目录(或者您可以提供绝对路径$ {/ abs / path / debug})。使用Release配置执行相同的操作,将“/ debug”替换为路径末尾的“release”。
这种方法似乎浪费了磁盘空间,但却是实现完全独立构建的有效替代方法。