using strace -f showed that geany creates a /tmp/tmp_XXXXXX.cpp in src/tagmanager/tm_workspace.c and that uses a g_hash_table in its lookup_includes function to write .h files in indeterministic order into the tmp cpp file. There is also a tm_file_inode_hash function using the st_ino field from g_stat output - and inode numbers are certainly varying across builds.