# Projet c++ sous Xcode



## parallel (19 Juillet 2005)

Bonjour,

J'ai trouvé un projet c++/SDL intéressant sur le net sur lequel je voudrais travailler. Avec une compilation en ligne de commande, pas de pb, mais le debug en ligne de commande est assez obscur pour moi , et comme je suis encore un débutant en programmation je préfère le debug en interface graphique comme seul Xcode sait le faire 

J'ai donc essayé d'importer ce projet dans une template d'application de Xcode (la SDL application créée à l'installation de SDL), modifié les chemins de frameworks et de headers pour tenir compte des nouvelles inclusions, et lancé une première compilation. Résultat, ça coince, et au vu des messages je crois que c'est dû au fait que Xcode utilise encore le compilateur C sur des fichiers C++. Typiquement:

```
struct struct1 {[indent] enum {a, b, c};
 enum {d, e, f};
 struct structInterne {[indent] int champ1;
 structInterne() {};
  [/indent]}
[/indent]}
```
lève des warnings un peu partout, et refuse d'accepter le constructeur structInterne() {}; en prétendant que la structure structInterne se termine juste avant cette déclaration, alors que, je le répète, la compilation en ligne de commande avec c++ ne pose aucun problème.

S'il le faut je peux toujours modifier en dur les fichiers pour supprimer ces messages d'erreurs, mais j'en ai moyennement envie sachant qu'ils ne présentent normalement aucune erreur grave.

J'ai essayé d'aller voir dans les options de compilation mais pas moyen de trouver où changer le compilateur, et en jouant sur les propriétés des fichiers (sourcecode.c.h -> sourcecode.cpp.h) rien ne change.

Quelqu'un a-t'il déjà été confronté au problème et si oui comment le résoudre ?

Merci d'avance


----------



## Didier Guillion (19 Juillet 2005)

Je dirait, au "pif":

-Verifier la version de GCC utilisée sour IB, (on a le choix entre GCC3 et GCC4).
-Verifier l'encodage du fichier source.

Cordialement


----------



## jean-lou (19 Juillet 2005)

parallel a dit:
			
		

> Bonjour,
> 
> 
> 
> ...



Rien à voir mais si tu veux t'y retrouver indente comme ca plutot : 


```
struct struct1
 {[indent]
 enum {a, b, c};
 enum {d, e, f};
 struct structInterne
        {[indent]
 int champ1;
 structInterne() {};
         [/indent]}
[/indent]}
```

c'est plus propre et quand c'est plus long, c'est dur de t'y repérer si c'est pas impec  ,   

JEanlOu


----------



## jean-lou (19 Juillet 2005)

je me suis un peu planté dans ce que je viens de poster, mais tu vois ce que je veux dire, quand tu fermes ou ouvre une accolade, fais le sur une ligne ou il n'y aura que l'accolade et rien qu'elle. Ensuite quand tu la fermes, veille a ce qu'elle soit bien alignés par rapport a celle a laquelle elle correspond. 

Donc en fait pas du tout comme j'ai fait 

J'espere avoir été clair

JEanlOu


----------



## Didier Guillion (19 Juillet 2005)

Je suis d'accord avec toi Jean-Lou. Cependant, cela ne peut être (a mon avis) sans relation aucune avec le probleme initial. Le C (ou C++) traite les espaces, tab, et retour chariot de la meme facon.
Sauf, peut etre si les retour chariot sont Unix (10) et pas Mac (13).

Cordialement


----------



## jean-lou (19 Juillet 2005)

Didier Guillion a dit:
			
		

> Je suis d'accord avec toi Jean-Lou. Cependant, cela ne peut être (a mon avis) sans relation aucune avec le probleme initial. Le C (ou C++) traite les espaces, tab, et retour chariot de la meme facon.
> Sauf, peut etre si les retour chariot sont Unix (10) et pas Mac (13).
> 
> Cordialement



haha, c'est tout à fait vrai, c'est bien pour ca que je précisais : "rien à voir mais .... " 

Mais ca lui évitera plein de problème par la suite, ça j'en met ma main au feu

C'est vrai que pour l'instant il reste avec son pb sur les bras 
  

Bonne Chance

JEanlOu


----------



## parallel (19 Juillet 2005)

Rebonjour,

Tout d'abord merci pour les suggestions. Pour les accolades, c'est un vieux réflexe de Eclipse, et le code proposé par la template SDL faisait pareil, donc j'ai pas cherché plus loin, mais je note la remarque quand même.

Pour le problème en lui-même, j'ai un peu honte parce que la solution est toute conne: un man gcc dans le terminal nous indique l'option -x language, et donc dans mon cas il suffisait de rajouter 
	
	



```
-x c++
```
 comme option de gcc.

Par contre j'ai essayé de passer de gcc4.0 à gcc3.3 et il a planté en me sortant plus de 10000 erreurs, m'obligeant à le tuer et le relancer. J'ai peut-être mal géré le changement, mais c'est quand même bizarre.

Merci encore


----------



## Didier Guillion (19 Juillet 2005)

Bonne nouvelle.

Donc tu compile avec GCC v4. Une chose que tu dois savoir c'est qu'une appli compilée avec GCC v4 ne fonctionnera plus en OS X 10.2. Je ne sais pas si c'est limitant pour toi, mais c'est bon à savoir.

Cordialement


----------

