g++ needs to have access to the compiled modules that are required by a module. Thus,. if we compile the first module that has no inter-module dependecies like this:
the gcm.cache contains compiled information from the module that is required by the second source file because this second file imports the module defined in the first file. the first file is compiled and placed in the cache... what we are missing is the linking of the first withj the second file.
Of course gcm.cache is internal implementation but it looks very close to supporting modules! maybe in next release of g++ we will have this incomplete support better implemented