C++ de l'organisation du projet (avec gtest, cmake et doxygen)

Je suis nouveau en programmation en général, donc j'ai décidé de commencer par faire une simple classe vector en C++. Cependant, j'aimerais obtenir de bonnes habitudes dès le début plutôt que d'essayer de modifier mon flux de travail plus tard.

Je ne disposent actuellement que de deux fichiers vector3.hpp et vector3.cpp. Ce projet va lentement commencer à se développer (ce qui la rend beaucoup plus générales sur l'algèbre linéaire bibliothèque) que je deviens de plus en plus familiers avec tout, donc je voudrais adopter un "standard" de présentation de projet pour rendre la vie plus facile plus tard. Donc, après avoir regardé autour, j'ai trouvé deux façons d'organiser php et les fichiers cpp, la première étant:

project
└── src
    ├── vector3.hpp
    └── vector3.cpp

et le second:

project
├── inc
   └── project
       └── vector3.hpp
└── src
    └── vector3.cpp

Qui recommanderiez-vous et pourquoi?

Deuxièmement, je voudrais utiliser le Google C++ Cadre d'Essais pour les tests unitaires mon code car il semble assez facile à utiliser. Avez-vous suggèrent le groupage avec mon code, par exemple dans un inc/gtest ou contrib/gtest dossier? Si groupés, ne vous suggérons d'utiliser le fuse_gtest_files.py script pour réduire le nombre de fichiers, ou de les laisser comme c'est? Si pas regroupés de la façon dont est cette dépendance traitées?

Quand il s'agit de l'écriture de tests, comment sont-ils organisés généralement? Je pensais l'avoir un fichier cpp pour chaque classe (test_vector3.cpp par exemple), mais le tout compilé dans un binaire pour qu'ils puissent tous être exécutées facilement?

Depuis le gtest bibliothèque est généralement construire en utilisant cmake et de faire, je pensais que ce serait utile pour mon projet aussi être construit comme cela? Si j'ai décidé d'utiliser la suite de présentation de projet:

├── CMakeLists.txt
├── contrib
   └── gtest
       ├── gtest-all.cc
       └── gtest.h
├── docs
   └── Doxyfile
├── inc
   └── project
       └── vector3.cpp
├── src
   └── vector3.cpp
└── test
    └── test_vector3.cpp

Comment le CMakeLists.txt avez à regarder de sorte qu'il peut soit construire la bibliothèque, la bibliothèque et les tests? J'ai aussi vu pas mal de projets qui ont un build et un bin répertoire. Le build se produire dans le répertoire de construction, puis les fichiers binaires déplacé dans le répertoire bin? Serait les binaires pour les tests et la bibliothèque de vivre dans le même endroit? Ou serait-il plus logique de le structurer comme suit:

test
├── bin
├── build
└── src
    └── test_vector3.cpp

Je tiens également à utiliser doxygen pour documenter mon code. Est-il possible d'obtenir ce à exécuter automatiquement avec cmake et faire?

Désolé pour toutes les questions, mais je n'ai pas trouvé un livre sur le C++ qui répond de manière satisfaisante ce type de questions.

  • La grande question, mais je ne pense pas que c'est un bon ajustement pour Stack Overflow's Q&Un format. Je suis très intéressé par une réponse si. +1 & fav
  • Ce sont beaucoup de question sur énorme. Mai il est préférable de les diviser en plusieurs petites questions et des liens vers d'autres. De toute façon à répondre à la dernière partie: Avec CMake vous pouvez choisir de construire à l'intérieur et à l'extérieur de votre répertoire src (je vous recommande à l'extérieur). Et oui, vous pouvez utiliser doxygen avec CMake.
InformationsquelleAutor rozzy | 2012-11-23