Estou muito atrasado para esta festa, mas a sua pergunta ainda não parece ter uma resposta completa, e é um hit bastante proeminente do Google.
Eu tenho exatamente o mesmo problema com C ++ / CMake / Git / Submodules e eu tenho um problema similar com o MATLAB / Git / Submodules, o que causa estranheza extra porque o MATLAB não é compilado. Eu me deparei com este vídeo recentemente, que parece propor uma "solução". Não gosto da solução, porque essencialmente significa jogar fora os submódulos, mas elimina o problema. É exatamente como o @errordeveloper recomenda. Cada projeto não possui submódulos. Para construir um projeto, crie um superprojeto para construí-lo e inclua-o como um irmão para suas dependências.
Assim, seu projeto para desenvolver graph
pode parecer:
buildgraph/graph
buildgraph/core
e depois o seu projeto para estúdio poderia ser:
buildstudio/studio
buildstudio/graph
buildstudio/network
buildstudio/core
Os superprojetos são apenas um CMakeLists.txt
principal e vários submódulos. Mas nenhum dos projetos tem nenhum submódulo.
O único custo que vejo para essa abordagem é a proliferação de "super-projetos" triviais que são dedicados apenas à construção de seus projetos reais. E se alguém se apossar de um de seus projetos, não há uma maneira fácil de descobrir sem encontrar o superprojeto, quais são suas dependências. Isso pode fazer com que fique muito feio no Github, por exemplo.