CMake builds all files

I just did a git pull.
One file changed, grdinfo.rst:

 doc/rst/source/grdinfo.rst | 5 +++++
 1 file changed, 5 insertions(+)

Still, Cmake rebuilds everything (197 ‘modules’).

Is this to be expected?
I thought the point of having a build/make-system is that only things that need to be rebuilt, are actually rebuilt.

In this case, I would expect nothing to happen. cmake --build . doesn’t build the docs?!

Currently, this is the expected behavior.

For GMT dev versions, we use the git commit hash in the GMT version string (e.g., 6.5.0_d60a484_2023.08.24). For every changes, the GMT version string changes, and thus the gmt_version.h file changes. The gmt_version.h is included in the gmt_dev.h file, which is further included in the source code of all GMT modules. So the dependency is “git commit hash”->“GMT version string”->“gmt_version.h”->“gmt_dev.h”->“Any GMT modules”. That’s why all modules are always rebuilt for only one file change. So

I agree that this is not ideal and should be avoided. Please open an issue report in the GMT repository and we will see what we can do to fix it.

1 Like

@seisman, thank you so much for crystal clear explanation.
It all makes sense.

I’ll make an issue.


Alrighty. Make Cmake only rebuild relevant files created.