我有几个生成源文件的shell脚本。除了最终的结果文件之外,它们还创建了一些工件,如日志文件,临时对象以便在出现问题时进行调试等等。我想在选择“Project - > Clean ...”时将自定义步骤添加到流程运行中,以删除所有生成的文件。我使用自动生成的Makefiles,并希望避免写我自己的。并非我不能,我只是宁愿花时间做更多的实际工作而不是繁琐的管理。Eclipse,CDT,在“clean”步骤中添加自定义步骤
回答
我发现了以下解决方案:在属性中,C/C++ Build,Builder Settings,Builder中有“Build command”框和“Use default build command”复选框。
所以它很简单,虽然很脏 - 我用“customMake”取代了“make” - 它拦截调用,检查“干净”参数并执行我选择的脚本。
很有可能有更好的解决方案,但我没有找到它的运气。
还有另一种方法。在项目的根目录下创建文件makefile.targets,并创建规则'clean',通过从Release/Debug /无论目录执行makefile来重复步骤,并在其中添加自定义步骤。例如:
清洁: - $(RM)$(OBJS)$(C_DEPS)$(存档)libmpos.a 回声PLACE自定义的步骤这里
不幸的是使发出警告规则重写:
../makefile.targets:2:warning:覆盖目标clean' makefile:52: warning: ignoring old commands for target
干净的命令'
但它的工作原理和似乎是比以前更好的解决方案。
@jędrzej-dudkiewicz
哇!我花了大约一个工作日来解决完全相同的问题,现在我读了你的文章... 但我想提出更多的“准确”的问题修复:你需要添加新的规则与假目标,比如说superclean
, (例如)makefile.targets
文件 - 它将包含在主makefile
;那么您需要在项目属性对话框的“C/++ Build”的“行为”页面中将superclean
(将其与其他已列出的目标空间分隔开)添加到相应的“Clean”字段。瞧!
编辑:
不幸的是提到的方法可能会产生一些不良影响。事实是,这是由Eclipse CDT产生的makefile
有线路是这样的:
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
endif
,当你将尝试清洁您的项目make
将尝试包括在*_DEPS
变量中列出的文件。这是因为ifneq ($(MAKECMDGOALS),clean)
不起作用,因为在我们的情况下,$(MAKECMDGOALS)
持有superclean clean
值。虽然这种变体可以工作还没有,只要你不会在你的项目的makefile
插入规则这样一个
%.d: %.o
...
地方。因为在这种情况下make
可能会尝试生成包含缺席的.d
文件。
所以我认为还有一种方法可以解决这个问题:在项目清理过程中,将(想要删除的)(自动)生成的文件列表附加到这里提到的变量之一:
# Other Targets
clean:
-$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) oc
[email protected] ' '
这是自动生成makefile
的报价。你可以这样做:
ifneq ($(findstring clean,$(MAKECMDGOALS)),)
EXECUTABLES+=$(LIST_OF_THE_GENERATED_FILES)
endif
- 1. Eclipse中的后期构建步骤CDT
- 2. 自定义步骤UISlider
- 3. AWS - 如何在当前步骤中添加EMR步骤
- 4. 如何在CreateUserWizard.CreatedUser步骤中添加用户到角色步骤
- 5. 自定义构建步骤中的自动版本文件步骤
- 6. 向tfs添加步骤
- 7. 步骤定义不确认
- 8. 黄瓜步骤未定义
- 9. d3.js自定义曲线步骤
- 10. VirtueMart 2自定义结帐步骤
- 11. Windows Phone Slider的自定义步骤
- 12. JqueryUi微调自定义步骤
- 13. 与自定义步骤和libary
- 14. 导航到Specflow步骤从步骤定义
- 15. 如何将自定义生成步骤添加到TFS 2015
- 16. 如何添加逻辑到自定义狂欢步骤
- 17. 如何为自定义Outlook插件添加预安装步骤
- 18. 链接到Eclipse中的静态库时的重复步骤CDT
- 19. 步骤
- 20. 增加RRD步骤
- 21. 如何让多行步骤定义调用其他多行步骤定义
- 22. 在步骤定义类中包含非步骤方法是否可以接受?
- 23. 未定义的步骤定义黄瓜
- 24. 黄瓜步骤上错误的步骤
- 25. ISampleGrabberFilter一次一个步骤的步骤
- 26. Eclipse CDT调试(步骤过滤器/避免库代码)
- 27. 如何在jquery步骤之间添加延迟转换(jQuery步骤插件)
- 28. 如何在Qt Creator项目向导中添加自定义构建步骤?
- 29. 在单一步骤
- 30. 光标在步骤
不错!我从来没有找到它,虽然我一直在寻找一天,就像你一样。好吧,我想别人会来,并告诉我们如何以更好的方式做到这一点:) – 2015-01-27 21:27:09