Permettre aux extensions d'ajouter des chemins d'inclusion

Salut 4ian,

Vu que SFGUI n’utilise plus le C++11 (mais ses propres classes de pointeur), j’avais envisagé de réinclure et réutiliser directement les headers de SFGUI dans les headers de l’extension Widgets.
Mais, il y a un problème : en effet, les headers de SFGUI ressemblent à ça <SFGUI/blabla.hpp>. Ce n’est pas gênant en soi, mais vu que mon extension possède des sous-dossiers (mon objet comboBox est par exemple dans le sous-dossier combobox), Clang ne trouve plus les headers de SFGUI.

Je voudrais donc savoir si ce serait possible de permettre aux extension de demander des répertoires d’inclusions supplémentaires (auquel cas, je demanderais d’inclure le dossier “/Extensions/include/Widgets/SFGUI” à Clang.

Bon, en attendant, j’ai trouvé un moyen de faire ça en mettant le dossier SFGUI dans Game Develop/include/GDL (vu que GD inclut ce dossier) à côté du sous-dossier GDL. Mais c’est pas super propre. :wink:

Merci d’avance.

J’ai ajouté ceci à ExtensionBase :

    std::vector < std::string > supplementaryIncludeDirectories; ///<Supplementary include directories to use on events compilation

Ce vector pourra être rempli dans le constructeur de l’extension ( tout comme supplementaryRuntimeFiles si nécessaire ) et lors du chargement de l’extension, les chemins seront ajoutés aux chemins d’inclusion du compilateur des évènements.
( Mais je rappelle que moins le compilateur a de chose à compiler, mieux c’est :slight_smile: Evite au maximum les dépendances, n’expose à GD que le strict minimum, dans la mesure du possible )

Merci.
J’ai juste à inclure “SFGUI/SharedPtr.hpp” pour pouvoir mettre un pointeur intelligent sur le widget. Le reste des headers est utilisé uniquement dans les cpp.

Il y a deux types : pointeurs et pointeurs intelligents ? Les deux n’en sont qu’un ?

Oui et ? J’ai pas compris ce que tu voulais dire…
C’est bien un pointeur intelligent que j’utilise.

Un pointeur intelligent n’est pas un élément du langage, c’est une classe, conçue par des personnes, qui possède le même comportement qu’un pointeur, mais qui offre des fonctionnalités bien pratiques comme le fait, entre autre, que si plus aucun pointeur intelligent ne pointe vers un objet, cet objet est détruit automatiquement.
C’est très pratique : Ca permet par exemple de stocker des objets dans un tableau, en manipulant non pas ces lourds objets mais de légers pointeurs intelligents, et le tout sans devoir gérer soi même la destruction des objets.

La bibliothèque Boost fournit une classe de pointeur intelligent ( boost::shared_ptr ) qui est celle utilisée par GD. Une implémentation similaire sera directement incluse dans la bibliothèque standard de la nouvelle norme C++11 ( A ce moment, les pointeurs intelligents feront vraiment “parti” du langage ).

Même dans le C++11, les pointeurs resteront des classes et non un mécanisme du langage.