我有兩個C++程序包A和B,其中A依賴於B.我想通過具有吞下B碼的最小部分要打破這種依賴關係,從而使B可以被拋出完全。合併兩個C++封裝
沒有人有我怎麼會簡介包A找出到底有類/功能中的任何意見,等我需要的B帶來的?
編輯: 我只是刪除軟件包B,並經過(很多)循環的編譯A,從B複製文件,相應地更新了Makefile.am。現在我很確定我已經臃腫的A包含了比需要更多的東西。我如何找到在執行程序/庫中從未使用過的A`代碼部分?
我有兩個C++程序包A和B,其中A依賴於B.我想通過具有吞下B碼的最小部分要打破這種依賴關係,從而使B可以被拋出完全。合併兩個C++封裝
沒有人有我怎麼會簡介包A找出到底有類/功能中的任何意見,等我需要的B帶來的?
編輯: 我只是刪除軟件包B,並經過(很多)循環的編譯A,從B複製文件,相應地更新了Makefile.am。現在我很確定我已經臃腫的A包含了比需要更多的東西。我如何找到在執行程序/庫中從未使用過的A`代碼部分?
也許objdump會給你一些有用的信息。在二進制文件(objdump -t)上使用它,它應該能夠顯示一些關於導入函數的有用信息。
我認爲有作用的三種可能的方式:
真的導入必要的東西:撤消你做了什麼,再做一遍,但這次不從B,而僅僅是拷貝整個文件編譯器告訴你的單個函數缺失。
根據您當前的情況,讓一些工具爲您分析代碼(請參閱Looking for a free source code analyzer (Function depedency tree)和Looking for a free source code analyzer (Function depedency tree)),或使用全部A編寫大量代碼並運行代碼覆蓋率分析。
這可能有點痛苦,但你總是可以刪除'B',重新編譯並查看你得到的錯誤消息:)然後從源代碼管理中恢復你實際需要的東西。一旦你這樣做了,作爲第二步,你可以將你保存的東西遷移到'A'。 – 2012-04-26 19:25:07
我一直在做這個。是的,真的很痛苦。我把第一層丟失的文件拖回去,並重新編譯,這給了我所依賴的東西。某些第二層文件可能會被刪除,如果我剪掉了我實際上並不需要的第一層文件的一半。 – ajwood 2012-04-27 13:29:01