J'ai un problème de compilation avec g++ (aussi gcc).
Mon programme est divisé en plusieurs fichiers et chaque fichier contient une classe. J'aimerais pour chaque classe créer un fichier objet .o et puis assembler le tout avec le main.
Exemple:
Fichier Point2D.cpp:
#include <stdio.h>
#include "Point2D.h"
Point2D::Point2D() {
}
Point2D::Point2D(double xval, double yval) {
x=xval;
y=yval;
}
void Point2D::toString() {
printf("Point2D(%f, %f)", x, y);
}
J'essaie de le compiler comme ceci:
$ g++ -ggdb -D_GNU_SOURCE -Wall -lgd -lpng -lz -ljpeg -lfreetype -lm -o Point2D.o Point2D.cpp
/usr/lib/gcc/i386-redhat-linux/4.0.2/../../../crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [Point2D] Erreur 1
Par contre si je compile tous les fichiers en une seule passe ça marche:
$ g++ -ggdb -D_GNU_SOURCE -Wall -lgd -lpng -lz -ljpeg -lfreetype -lm -o contour Point2D.cpp DoubleArray2D.cpp Contour.cpp main.cpp
$
J'aimerais éviter d'avoir à recompiler tous les fichiers sources si je n'en modifie qu'un seul. Comment dois-je m'y prendre?
Merci d'avance.
J'en profite pour poser une autre question: existe-t-il un équivalent à Javadoc pour le C++ ? Quelles sont les solutions disponibles?
# De mémoire
Posté par zoltar . Évalué à 5.
man gcc devrait aider, si c'est dispo.
[^] # Re: De mémoire
Posté par fog . Évalué à 1.
Merci, je testerai chez moi.
# Makefile
Posté par gerald dumas . Évalué à 4.
Ce que tu désires, c'est compiler Point2D.cpp en tant qu'objet pour être ensuite utilisable dans main.cpp. Pour faire ca, il faut ajouter l'option -c lors de la compilation de Point2D.cpp
Enfin l'idéal est de construire un Makefile. Avec un tel fichier et la commande make, tu ne compileras que les fichiers modifiés.
# doxygen
Posté par berti . Évalué à 7.
Si je me souviens bien de ce qu'est javadoc, un équivalent est doxygen (www.doxygen.org).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.