仅在 CMake 中的标头更改时重新链接共享库

Pra*_*tic 5 c++ cmake shared-libraries

使用 CMake,是否有一种方法可以生成构建系统,如果共享库的源代码更改而不更改其标头,则不会重新链接下游的所有内容?

在 Makefiles 中,我在共享库本身上使用了一个只有订单先决条件的规则,并在库头上使用了常规先决条件来获得这种效果。

我知道这并不能严格保证生成正确的构建,例如您可以从共享库中删除函数定义,但这是为了快速重建调试构建,根据我的经验,它几乎总是产生正确的构建。我想有一两次我遇到了运行时链接器错误,但在那种奇怪的情况下,像往常一样运行构建并没有太大的麻烦。

尽管如此,如果有充分的理由表明这实际上是一个糟糕的想法并且不应该这样做,那也可能是一个答案。