C ++ estrutura de projeto no Visual Studio 2008
Pergunta
Então, eu venho fazendo Java para um número de anos, mas agora estou começando um projeto C ++. Eu estou tentando determinar as melhores práticas para a criação de dito projeto.
Dentro do projeto, como você geralmente estruturar o seu código? Você fazê-lo estilo de Java com as pastas de namespace e acabar com sua fonte dessa maneira? Você manter seus cabeçalhos públicos em um include diretório para referência fácil?
Eu vi ambos e outras maneiras mencionado, mas o que é um método bom para um grande projeto?
Além disso, como você lida com recursos / pastas na sua estrutura de aplicação? É tudo muito bem para o projeto final para instalar com uma pasta log
para armazenar os logs, talvez uma pasta lib
para arquivos de biblioteca, talvez uma pasta data
de dados, mas como você controla os bits dentro do projeto? Existe uma maneira de definir que assim quando você construir a solução que constrói a estrutura para você? Ou, você simplesmente tem que entrar em suas pastas de configuração construídos (Debug, Release, etc.), e construir a estrutura do arquivo manualmente, garantindo assim caminhos de seu arquivo EXE está esperando para encontrar estejam posicionadas corretamente?
Solução
tendem a fazer com que cada solução de um componente, contendo um ou mais projectos (ou sub-componentes) e um projecto de ensaio. O projeto de teste contém todos os testes de unidade.
Em seguida, organizar as soluções em uma árvore com base em módulos e componentes, por exemplo:
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution
A solução, então, conter vários projetos do Visual Studio:
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/Something
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/SomethingElse
//depot/MyProject/ASubSystem/AComponentOfTheSubSystem/ASubComponentWithAVSSolution/TestTheSolution
Pode haver mais profundidade à árvore, ou menos, dependendo do número de componentes / sub-componentes que existem. Nós também tendem a ter uma solução "Geral" no sistema de sub e sub nível de componente com coisas geral re-utilizável.
Temos, então, uma solução em nível de sistema sub que os laços tudo juntos para construir o sistema de sub.
Não usar ou exportar para um diretório "incluir". Nós vamos Visual construção Studio e link dentro de nossas caixas de proteção. Temos um sandbox "Release" em separado para garantir que não acidentalmente ligar a biblioteca errada.
Outras dicas
Eu tenho um relacionado, mas pergunta diferente acontecendo por aqui também. I nmake estado, mas realmente é qualquer sistema de compilação: Scons, Bakefile, nmake, Formiga, vcproj
A maneira que eu geralmente estruturar meu código é de "módulo" dentro de um aplicativo ou DLL. Eu não tendem a namespaces de uso, mas isso não significa que você não deve.
Dentro do IDE eu tenho algo parecido com isto:
/solution
/prj1
/headers
/module1
/module2
/resource
/source
/module 1
/module 2
/test
/prj2
/headers
/module1
/module2
/resource
/source
/module 1
/module 2
/test
No sistema de arquivos eu tenho algo parecido com isto:
/solution
/prj1
/bin
/build
/include
/module1
/module2
/lib
/res
/src
/module1
/module2
/test
/prj2
/bin
/build
/include
/module1
/module2
/lib
/res
/src
/module1
/module2
/test