IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Choisir un environnement de développement Discussion :

[LINUX] se passer d'IDE ?


Sujet :

Choisir un environnement de développement

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Par défaut [LINUX] se passer d'IDE ?
    Bonjour,
    depuis longtemps je compile des logiciel -non ecrit par moi même- via la console en tapant des commandes comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./configure
    make
    make install
    par contre j'ai toujours que travaillé avec code::blocks. Aujourd'hui j'aimerais faire comme les grands et me passer d'IDE.

    Le problème ? avec code::block je me contenté de lui dire dans quels répertoires cherches les lib, include...
    alors qu'avec un makefile il faut taper des fichiers comme configure.ac galère galère quand on un un projet avec plein de fichier et qui cherche des en-tête à l'autre bout du disque dur dans un dossier reculé...

    ce problème ma semblé résolu quand j'ai découvert autotools. Problème les tuto que j'ai trouvé disent d'employer autoscan et de renommer le fichier de sortie configure.scan en configure.ac... et bien j'ai des erreurs lorsque je tape make...

    et le pire c'est que aucun tutorial que j'ai vu ne précise comment définir un dossier contenant des fichiers en-têtes qui se situe dans un dossier lointain...

    et bien entendu il y a quand même des fichiers à taper à la main!...


    CMake quant à lui me semble plus simple d'utilisation, mais là je n'ai pas trouvé comment lui dire de prendre en compte des fichiers en-tête situé dans moins lointain dossier...

    bref
    je suis perdu,
    je vois pas comment m'en sortir,
    je manque d'expérience,
    je demande votre aide...

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Salut,

    Citation Envoyé par TocTocKiéLà? Voir le message
    ce problème ma semblé résolu quand j'ai découvert autotools. Problème les tuto que j'ai trouvé disent d'employer autoscan et de renommer le fichier de sortie configure.scan en configure.ac... et bien j'ai des erreurs lorsque je tape make...
    Les fichiers configure.ac ne sont pas encore prêts à être utilisés avec sh : il faut encore lancer dessus aclocal, autoconf et automake.



    À part ça, tu peux opter pour une autre solution, pour générer tes makefiles : un outil comme qmake peut te les fournir. Il est prévu pour Qt, mais il n'utilisera aucun des outils (rcc, moc...) s'ils ne sont pas nécessaires. En le lançant dans un répertoire, il va te générer tes makefiles. Si les paramètres par défaut te suffisent, pas besoin de sortir une plus gross artillerie.

    En fait, pourquoi veux-tu utiliser les scripts configure ? Il est censé générer des makefiles et d'autres fichiers d'en-tête pour adapter un logiciel ou une librairie à une configuration particulière. Quand il n'y en a pas besoin, on distribue directement un Makefile.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Citation Envoyé par TocTocKiéLà?
    CMake quant à lui me semble plus simple d'utilisation, mais là je n'ai pas trouvé comment lui dire de prendre en compte des fichiers en-tête situé dans moins lointain dossier...
    Tu dois utiliser la macro INCLUDE_DIRECTORIES.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PROJECT (MonProjet)
     
    INCLUDE_DIRECTORIES (MonDossier)
     
    ADD_EXECUTABLE (MonExe
      MonSource1.cpp
      MonSource2.cpp
    )
     
    TARGET_LINK_LIBRARIES (MonExe MaLibrairie)
    Si les entêtes que tu cherches sont ceux d'une librairie plutôt connue, il y a de fortes chances que quelqu'un ait écrit un module CMake pour le trouver. L'emplacement des entêtes est alors paramétrable via l'interface de CMake. Cela donnerait quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    PROJECT (MonProjet)
     
    FIND_PACKAGE (MaLibrairie REQUIRED)
     
    INCLUDE_DIRECTORIES (${MaLibrairie_INCLUDE_DIRS})
     
    ADD_EXECUTABLE (MonExe
      MonSource1.cpp
      MonSource2.cpp
    )
     
    TARGET_LINK_LIBRARIES (MonExe ${MaLibrairie_LIBRARIES})
    Je t'invite à lire l'initiation de Developpez.com.
    http://florian-goujeon.developpez.co...ke/initiation/

    Citation Envoyé par TocTocKiéLà?
    ce problème ma semblé résolu quand j'ai découvert autotools.
    Je travaillais avant avec les autotools mais j'ai très vite laissé tombé quand j'ai découvert CMake. Les autotools étaient beaucoup trop compliqués à utiliser (vive sh et m4 :-( ), limités aux Makefiles alors que CMake dispose d'un langage très intuitif et permet de générer des Makefiles mais aussi des projets pour des IDEs.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Par défaut
    merci de ta réponse,
    j'arrive à compiler comme je veux maintenant avec CMake. Par contre j'ai une question, si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    (...)
    LINK_DIRECTORIES(../lib)
    (...)
    target_link_libraries(
    	toto
    	libtest.so
    )
    je compile bien en dynamique ? si oui et sachant que ma bibliothèque se trouve dans le dossier /home/user/toto/lib, pourquoi quand je renomme le dossier lib par bil je peux exécuter mon programme ?

    edit ::
    en fait il semblerait que la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LINK_DIRECTORIES(../lib)
    est ignoré, car j'arrive à faire (après un make clean) un cmake suivi d'une compilation sans accro. Donc qu'il utilise la librairie que j'ai dans /usr/lib/local, ce que je ne veux pas!

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    target_link_libraries(toto ../lib/libtest.so)
    Pour les raisons que tu évoques, il est recommandé de passer le chemin complet (un peu comme dans Visual Studio finalement).

    Je suis un peu surpris par le fait qu'il semble ignorer ta commande LINK_DIRECTORIES. Pour vérifier la librairie utilisée par un exécutable, un petit coup de ldd. Pour information, CMake utilise le rpath à la compilation. L'exécutable retient le chemin des librairies dynamiques qu'il utilise. A l'installation, cette information est supprimée de l'exécutable.

    EDIT
    Au passage, petite question mais je ne pense pas que ce soit le cas, est-ce que libtest est une librairie de ton projet ? Tu sembles indiquer qu'elle vient d'un projet externe.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Par défaut
    Au passage, petite question mais je ne pense pas que ce soit le cas, est-ce que libtest est une librairie de ton projet ? Tu sembles indiquer qu'elle vient d'un projet externe.
    Il s'agit des bibliothèques Ogre3D et OIS.

    j'ai fait un test, j'ai renommé les bibliothèques respectivement libAffichage.so et libClavierSouris.so (ceux de mon répertoire lib), puis j'ai mis à jour le CMakeLists.txt avec cette nouvelle nomination. J'ai effacé toute trace de makefiles et des fichiers générés par cmake. Une fois compilé j'ai utilisé la commande ldd comme tu me l'as proposé (un type de commande que je cherchais depuis longtemps, merci) et là je vois que le binaire pointe sur les bibliothèques Ogre et OIS installées dans /usr/local/lib!

    Visiblement il y a quelque chose qui m'échape...

    pour expliquation, j'utilise actuellement un linux 32bit mais j'aimerais passer sous 64bit, par contre je devrais compiler en 32bits sous mon environnement 64bits. Je sais que ça n'a rien à voir, mais c'est pour expliquer pourquoi j'essai de forcer mon programme à utiliser les bibliothèques situées dans un repertoire lib que j'ai choisi.

  7. #7
    zul
    zul est déconnecté
    Membre chevronné Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Par défaut
    Si il n'y a pas d'information dans le binaire sur où sont situés les librairies (via rpath donc), le linker dynamique cherche dans les chemins contenus dans $LD_LIBRARY_PATH l'emplacement possible des bibliothèques. Si tu n'a pas renseigné cette variable, il doit chercher dans les chemins par défault tel que /usr/lib:/usr/local/lib etc

    Pour résoudre ton problème, tu dois donc éditer cette variable d'environnement pour pointer en premier lieu vers tes librairies installées en local.

    Par curiosité, pourquoi installer un système 64bits pour compiler en 32bits derrière ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IDE javascript sous linux
    Par elekis dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 21/05/2006, 23h44
  2. Passer de Linux a Windows
    Par goblin dans le forum Windows
    Réponses: 10
    Dernier message: 05/11/2005, 01h28
  3. [FreePascal] Linux : configuration de l'IDE FreePascal
    Par Pigoulou dans le forum Free Pascal
    Réponses: 2
    Dernier message: 09/02/2005, 20h17
  4. Réponses: 1
    Dernier message: 13/01/2003, 09h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo