是否有任何软件可以在文件更改时重新编译基于CMake的软件项目?

时间:2011-02-07 12:41:13

标签: c++ build-automation cmake

我正在开发一个使用CMake作为构建系统的C ++软件项目。该软件基于Mac OS / X,Linux和Windows构建。

为了改善我通常的黑客/编译/测试周期,我想知道是否有一些类似守护进程的软件知道CMake项目考虑的所有源文件。每当修改任何源文件时,守护程序都会注意到这一点并重建受影响的目标。我的想法是,我的周期中的“编译”步骤将变得更快,因为它可以立即返回说“没有什么可做,因为你的友好的neighborhoud构建守护进程已经重建了所有文件。”。

有人知道可以这样做的现有软件吗?如果不是 - 以某种方式可以导出CMake考虑的源文件列表,这样我就可以自己编写一个小守护进程来监视这些文件,并自动重新运行make(或任何适合所选生成器的文件) ?在最好的情况下,我也会得到依赖树,以便我可以一遍又一遍地跳过检查所有依赖项,然后只更新我需要的目标。

1 个答案:

答案 0 :(得分:2)

我已经使用JNotify成功地监控文件更改而没有太多麻烦。

它适用于您提到的所有操作系统,文件更改检测几乎是即时的。它可以检测文件的创建,删除,修改等。

可以找到一个很好的代码示例here

您可以这样做:

class CMakeListener implements JNotifyListener {
    public void fileModified(int wd, String rootPath, String name) {
       // if a file is a cpp or hpp file, execute CMake
    }
}

并且您的CMake任务应该很好地自动化。