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

时间:2015-01-09 18:42:21

标签: c++ cmake shared-libraries

使用CMake,有没有办法生成构建系统,如果共享库的源代码在没有标题更改的情况下发生更改,则不会重新链接下游的所有内容?

在Makefile中,我使用的规则只有共享库本身的订单先决条件和库头上的常规先决条件才能产生这种效果。

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

尽管如此,如果有充分的理由认为这实际上是一个可怕的想法而且不应该这样做也可能是一个答案。

1 个答案:

答案 0 :(得分:3)

在CMake 2.8.11及更高版本中,您可以设置CMAKE_LINK_DEPENDS_NO_SHARED以获得此行为。

http://thread.gmane.org/gmane.comp.programming.tools.cmake.user/43246/focus=44469

http://www.cmake.org/cmake/help/v3.1/prop_tgt/LINK_DEPENDS_NO_SHARED.html