想象一下这样的场景:
L
^^
|
| D
| ^
| /
X
其中 X 是可执行文件,D 是 DLL,L 是 Lib。箭头表示"取决于"。
我对L的来源进行了更改。当我尝试编译和运行 X 时,正在执行的代码是 L 的 OLD 代码。发生这种情况是因为,当链接 X 时,它首先吸收 D 代码,并且它看到 D 已经拥有 L 的代码,并且不会与 L 的新代码链接。
我有一个问题,不知道我需要重建什么D。如果我制作我的代码库图,它将是一个非常复杂的图,有很多依赖项。有没有办法构建依赖于 X 的解决方案?或者至少,发现它们。
因为,现在我以这种方式解决这个问题:
1)尝试手动了解X的依赖关系。这是非常烦人和不确定的。我多次陷入我在上面描述的情况。
2)我有一个脚本可以重新编译我的代码库的所有内容。有很多很多与X无关的解决方案。这不必要地花费了大量的时间和资源。
重要提示:这些项目位于单独的解决方案上,不能合并为一个。代码库很大,我们不希望它的模块化程度降低。
由于您指出无法编辑依赖项,因此我将退出 M$ 工具链并尝试使用 g++
,您只需为其提供您在 Visual Studio 项目中拥有的包含路径。 它有一个命令行开关,可以为它给出的每个源文件生成一个make
文件规则。 此生成文件可以作为您依赖什么的线索。
> g++ -I ./lib1 -MM *.cpp
x.o: x.cpp a.h lib1/lib1.h
y.o: y.cpp a.h
只要您只搜索 X 的直接依赖项,就可以了。 如果你知道足够多的 gnu 工具,你也许能够sort
依赖的路径,你就可以开始了:)。
然后,当然,您仍然必须为项目 X 填写这些依赖项。
也许为此使用cygwin是个好主意。 还是明妖。