Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Compiler une librairie.  (Lu 18580 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #30 le: Novembre 29, 2013, 08:00:44 pm »
Bof non que je mette ça ou pas il faut toujours que je link les .a de SFML à mon projet qui utilise SFGL.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #31 le: Novembre 30, 2013, 09:33:50 am »
Je pense qu'il ne faut pas chercher plus loin : comme mon projet utilise SFGL et SFML je pense que je suis obligé de toute façon de linker les 2 bibliothèques à mon projet.

Je crois que je n'ai donc plus qu'à régler ce bug pour la compilation de la librairie en mode shared.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #32 le: Novembre 30, 2013, 10:34:33 am »
Bon, j'ai bien fait un find_package(SFML 2 COMPONENTS graphics window system) mais lorsque je ne link pas les .a de SFML à mon projet qui utilise SFML et SFGL j'ai des undefined references, et lorsque je les link les .a de sfml à mon projet j'ai erreurs des multiples definitions off.
Mais je link peut être mal SFML, peut être que je ne devrait pas la link en utilisant cette macro  (que j'ai copié du fichier Macro.cmake de SFML) :
sfgl_add_library(sfgl SOURCES ${SRC} EXTERNAL_LIBS{SFML_LIBRAIRIES})

Mais la link autrement, maintenant faut que je sache comment la link...




« Modifié: Novembre 30, 2013, 10:38:48 am par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #33 le: Novembre 30, 2013, 10:43:06 am »
Mais dans ce tutoriel : https://github.com/SFML/SFML/wiki/Tutorial%3A-Build-your-SFML-project-with-CMake

J'ai vu que tu linkais la bibliothè à l'exécutable avec target_link_libraries hors que moi je n'ai pas d'exécutable vu que c'est une librairie et pas un projet.

Donc bon je me demande comment faire pour la linker dynamiquement, à moins que find_package (SFML 2 COMPONENTS graphics window system) le fasse déjà ?

Bref je ne comprend pas très bien là.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Compiler une librairie.
« Réponse #34 le: Novembre 30, 2013, 06:45:48 pm »
target_link_libraries fonctionne pour tout type de target, pas que les exécutables.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #35 le: Décembre 01, 2013, 09:55:03 am »
Ha je pense que j'ai trouvé comment faire cette fois. :D
set(INCROOT ${PROJECT_SOURCE_DIR}/include/SFGL)
set(SRCROOT ${PROJECT_SOURCE_DIR}/src/SFGL)
set(SRC
${INCROOT}/erreur.h
${SRCROOT}/erreur.cpp
${INCROOT}/utilities.h
${SRCROOT}/utilities.cpp)
sfgl_add_library(sfgl
SOURCES ${SRC})
find_package(SFML 2 COMPONENTS graphics window system)
include_directories(${PROJECT_SOURCE_DIR}/src ${SFML_INCLUDE_DIR})
target_link_libraries (sfgl ${SFML_LIBRARIES})
Je test ça, si ça marche, alors je rajouterai les dernière classe de la librairie et je mettrai ça sur git-hub et je débuterai enfin le tutoriel. (Sur un autre site)
« Modifié: Décembre 01, 2013, 09:59:29 am par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #36 le: Décembre 01, 2013, 10:48:26 am »
Sinon, j'ai vu que tu avais aussi un module sfml-main mais ça ne marche qu'avec windows, donc, j'espère que en liant dynamiquement sfml ça marchera aussi sous les autres plateformes.

Une autre question sinon, je n'ai plus besoin des fichiers .a de sfml dans mon projet SFGL hein si je la link dynamiquement je n'ai besoin que des fichiers .dll de sfml hein ?

Parce que j'ai toujours des erreurs de undefined reference même en ayant linker sfml dynamiquement avec target_link_librairies. :/

Et le plus inquiétant est, quand je veux link sfml à mon projet qui utilise sfgl là je n'ai plus d'erreur de undefined reference mais il me dit qu'il me trouve 2 fois les mêmes fonction c'est à dire dans les .a de SFML et dans les .a de sfgl, donc, je comprend vraiment pas pourquoi quand je ne lie plus les .a de sfml à mon projet, il ne trouve plus les .a de sfml hors qu'elles sont liées dynamiquement aux .a de sfgl...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Compiler une librairie.
« Réponse #37 le: Décembre 01, 2013, 11:07:15 am »
Le problème c'est que tu fonces tête baissée dans des choses que tu ne maîtrises pas. Tu tâtonnes jusqu'à ce que "ça marche". Tu vas droit dans le mur comme ça. Tu devrais plutôt prendre les problèmes / questions un à un, tranquillement, prendre le temps de les comprendre et de les résoudre. Là tu patauges parce qu'il te manque une ou deux notions de base sur l'édition de liens et les bibliothèques ; si tu te renseignais sur ces sujets au lieu de bidouiller tes scripts CMake, tu gagnerais du temps.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #38 le: Décembre 01, 2013, 11:35:28 am »
Bah j'ai lu ce tutoriel : http://fr.openclassrooms.com/informatique/cours/creer-des-bibliotheques-avec-code-blocks/les-bibliotheques-dynamiques-2

Pour essayer de comprendre un peu mieux comment linker tout ça.

Mais ce que je voudrais savoir c'est si, sous windows, avec le script findSFML, pour la liaison dynamique, tu as fais une bibliothèque à chargement implicite ou bien à chargement explicite ???


Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #39 le: Décembre 01, 2013, 12:26:33 pm »
Ecoute ton idée ne marche pas car même en liant dynamiquement SFML à sfgl je dois quand même encore lier les .a de SFML à mon projet.


Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #40 le: Décembre 01, 2013, 12:51:27 pm »
Et encore une chose, pour la compilation de SFML je ne vois pas d'option pour compiler en 32 ou en 64 bits, par défaut ça effectue une compilation en 32 ou bien en 64 bits ???

Car moi quand je compile sfgl et que je lie les .a de sfg et sfml à mon projet j'ai une erreur d'incompatibilité, et je compile mon projet en 32 bits.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #41 le: Décembre 01, 2013, 01:02:55 pm »
Ha non je n'ai rien dit c'est l'option CMAKE_OSX_ARCHITECTURES.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #42 le: Décembre 01, 2013, 01:36:43 pm »
Bon j'ai des problèmes d'incompatibilité maintenant entre du code 64 bits et du code 32 bits.  >:(

Pourtant j'ai bien compilé SFML et SFGL en 32 bits...., mais le programme ne veut plus s'exécuter.

Je pense que je vais tout simplement mettre tout ça sur github, et, voir, si y'a pas quelqu'un qui pourrait m'aider là dessus.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #43 le: Décembre 01, 2013, 10:03:20 pm »
Bon sur ce coup là je sèche vraiment, j'ai même essayé de compiler sfgl avec le flag -m32 mais même problème. :/

Je pense que je vais repartir sur le mode statique en liant les dépendances d'sfml à sfgl, là bizarrement ça marchait, il y avait juste que je je devais lié les fichiers SFML et sfgl -s.a à mon projet. (donc beaucoup de fichier à lier quoi)

Mais au moins, ça marchait. :)



« Modifié: Décembre 01, 2013, 10:06:48 pm par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Compiler une librairie.
« Réponse #44 le: Décembre 02, 2013, 10:09:03 am »
Bon finalement j'ai réussi.

Il fallait que je link sfml dans tout les modules de sfgl, et pas seulement dans le module principal.
Mais comme je ne m'y connais pas de trop avec CMake, que c'est ma 1ère librairie et que en plus je n'ai jamais eu l'occasion de travailler en entreprise et sur différentes plateformes, je pense que je vais laisser le soin à un expert d'améliorer l'installation de la librairie sur les différentes plateformes existantes.


Sinon, j'ai installé boost dans le dossier include de mingw parce que je n'ai pas envie de me casser plus la tête avec cmake pour l'instant, ça fait déjà une semaine que je suis dessus, j'ai essayer le code trouvé sur le tutoriel de Laurent pour installer boost mais malgré ça cmake me dit qu'il ne trouve pas boost donc...