通过C/C++#定义makefile
我使用EclipseIDE开发C/C++。Eclipse还生成了一个我不想编辑的makefile,因为它将被覆盖 我想用这个makefile在哈德逊内部进行夜间构建 如何将在IDE的项目文件中生成的#定义传递给makefile?(为什么Eclipse还没有将它们包含在生成的makefile中?) 事实上,我曾经弄明白了这一点,然后意外地重写了它:-(但至少我知道它是可以做到的…对于GCC使用-D define OP在下面评论说,他希望将define传递给make,并将其传递给GCC通过C/C++#定义makefile,makefile,eclipse-cdt,Makefile,Eclipse Cdt,我使用EclipseIDE开发C/C++。Eclipse还生成了一个我不想编辑的makefile,因为它将被覆盖 我想用这个makefile在哈德逊内部进行夜间构建 如何将在IDE的项目文件中生成的#定义传递给makefile?(为什么Eclipse还没有将它们包含在生成的makefile中?) 事实上,我曾经弄明白了这一点,然后意外地重写了它:-(但至少我知道它是可以做到的…对于GCC使用-D define OP在下面评论说,他希望将define传递给make,并将其传递给GCC Make不允
Make不允许这样做。通常您只需添加另一个Make规则来添加定义。例如“Make release”与“Make debug”。作为Make文件的创建者,您可以创建这两个规则,并在Make文件中正确定义。现在,如果Eclipse没有将定义放入Make文件中,我会说Eclipse已损坏。您可以编写编写一个包含头文件的小程序,并编写一个makefile片段(需要GNU make)
这是一个相当丑陋的解决方案,需要大量的手工操作。更优雅的做法是解析项目文件并编写makefile片段。如果您是从命令行运行make,请使用
make CPPFLAGS=-DFOO
这将在所有编译中添加-DFOO。另请参阅制作手册中的CFLAGS、CXXFLAGS、LDFLAGS。如果您使用自动工具,另一个选项是有两个目录“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。打开项目的属性(项目->属性->C/C++构建->构建器设置),并将构建位置->构建目录设置为
${workspace_loc:/helloworld/bin/debug}
将“helloworld”替换为相对于工作区的项目目录(或者您可以提供一个绝对路径${/abs/path/debug})。对发布配置执行相同的操作,将“/debug”替换为路径末尾的“Release”
这种方法看起来是浪费磁盘空间,但却是一个有效的替代方案,完全实现了单独的构建。
我们中的一个已经回答了错误的问题。我认为他有一个C++头,有一些<代码>定义了,并且希望使用它们来做出决策。如果他有一些变量,想要得到它们,你的建议是正确的。在C++编译期间,预处理器可能考虑到了,抱歉,我想传递“X”定义,然后调用GCC。这样,像<代码> --dMAXVAL=42 < /代码> HMM,我知道我以前管理过它,但是忘记了……我同意Eclipse出来把定义放入Mag文件中。.我注意到makfile行-include../makefile.init'和-include../makefile.defs`但这些文件不存在(!).Eclipse CDT的家伙们似乎已经失手了,因为从Jaunty升级到Karmic后,再也没有软件包了。关于如何安装CDT,有太多或网页提供了不同的解决方案。可能是我选择的“几乎有效”解决方案。也就是说,从CDT内部工作,而不是从外部使用make
?是的,但问题是我知道我以前没有使用黑客。唉,我已经记不起怎么做了。请看下面的评论。也许Jaunty/Kosmic CDT的惨败意味着我不能重复我以前做过的任何事情。我可能不得不按照你的建议和建议去做在makefile中添加广告,对其进行处理并将其写入另一个makefile。顺便说一句,我想要使用的定义与Eclipse中使用的定义并不完全相同(例如,我可以将-Doutput=file替换为-Doutput=console,等等)这似乎覆盖了我在Makefile中设置的CPPFLAGS。是否有方法将此标志添加到CPPFLAGS?@matec-是的,环境变量中的定义具有优先级。您可以在Makefile中使用CPPFLAGS+=-DBAR
添加更多标志