我有两个 C++ 包 A 和 B,其中 A 依赖于 B。我想通过让 A 吞下 B 代码的最小部分来打破这种依赖关系,这样 B 就可以被完全抛弃。
有人对我如何分析包 A 以准确找出我需要从 B 引入的类/函数等有什么建议吗?
编辑:我只是删除了包 B 并经历了(很多)编译 A 的循环,从 B 复制文件,相应地更新了 Makefile.am。现在我很确定我已经用比需要的更多的东西来膨胀包 A。我怎样才能找到从未在其产生的可执行文件/库中使用的 A` 代码部分?
我认为有三种可能的行动方式:
真正只导入需要的东西:撤消你所做的,然后再做一次,但这次不要从 B 复制整个文件,而只是复制编译器告诉你丢失的单个函数。
根据您目前的情况,让一些工具为您分析代码(请参阅寻找免费的源代码分析器(功能依赖树)和寻找免费的源代码分析器(功能依赖树)),或者使用所有 A并运行代码覆盖率分析。
也许 objdump 会给你一些有用的信息。在二进制文件(objdump -t)上使用它,它应该能够显示有关导入函数的一些有用信息。