我有幾個生成源文件的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. 在CMake中添加自定義生成步驟
- 6. 黃瓜不識別定義的步驟「未定義的步驟」
- 7. 黃瓜:未定義步驟雖然步驟被定義
- 8. 自定義構建步驟中的自動版本文件步驟
- 9. 向tfs添加步驟
- 10. 黃瓜步驟未定義
- 11. 同一步驟定義
- 12. 步驟定義不確認
- 13. jQuery UI滑塊自定義步驟
- 14. JqueryUi微調自定義步驟
- 15. Windows Phone Slider的自定義步驟
- 16. Android NDK:自定義預構建步驟?
- 17. d3.js自定義曲線步驟
- 18. coffeescript的自定義預處理步驟?
- 19. CSE(自定義搜索引擎)步驟
- 20. 創建自定義視圖的步驟
- 21. 與自定義步驟和libary
- 22. VirtueMart自定義結帳步驟
- 23. VirtueMart 2自定義結帳步驟
- 24. 導航到Specflow步驟從步驟定義
- 25. 如何將自定義生成步驟添加到TFS 2015
- 26. 如何添加邏輯到自定義狂歡步驟
- 27. 如何爲自定義Outlook插件添加預安裝步驟
- 28. 使用nuget包添加自定義構建步驟
- 29. 在actionCreate()中添加用戶ID步驟
- 30. 鏈接到Eclipse中的靜態庫時的重複步驟CDT
不錯!我從來沒有找到它,雖然我一直在尋找一天,就像你一樣。好吧,我想別人會來,並告訴我們如何以更好的方式做到這一點:) – 2015-01-27 21:27:09