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

Auteur Sujet: Sublime Text - commande Linux [RÉSOLU !]  (Lu 2546 fois)

0 Membres et 1 Invité sur ce sujet

DrPapino

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Sublime Text - commande Linux [RÉSOLU !]
« le: Juin 21, 2016, 09:16:16 pm »
Bonjour :D

Je délaisse XCode pour Sublime Text, avec le lot de petits tracas qu'entraine cette migration :)

En fait, je n'arrive pas à compiler les lib dynamiques de SFML. Ou plutôt j'y arrive en passant direct par mon terminal, mais pas depuis Sublime Text :o

Sur mon bureau, j'ai un petit main.cpp qui ouvre une fenêtre avec SFML, et je compile no problem en utilisant les commandes suivantes, depuis mon terminal :
cd desktop
g++ -c main.cpp -I/Volumes/DATA/SFML/include
g++ main.o -o sfml -L/Volumes/DATA/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system
export LD_LIBRARY_PATH=/Volumes/DATA/SFML/lib && ./sfml

propre !

Sur Sublime Text, il faut aller modifier les préférences du build. J'ai donc écrit ces trois lignes de code, pensant que ça marcherait :

"cmd" : ["g++", "-c", "${file}", "-I/Volumes/DATA/SFML/include"],
"cmd" : ["g++", "${file_path}/${file_base_name}.o", "-o", "sfml-app", "-L/Volumes/DATA/SFML/lib", "-lsfml-graphics", "-lsfml-window", "-lsfml-system"],
"cmd" : ["export LD_LIBRARY_PATH=/Volumes/DATA/SFML/lib && ./sfml-app"]

... Mais en fait non !

Du coup je comprend pas trop ??? Qu'est-ce qu'ai-je fait de mal ? ;D
« Modifié: Juin 22, 2016, 05:45:24 pm par DrPapino »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Sublime Text - commande Linux
« Réponse #1 le: Juin 21, 2016, 09:21:52 pm »
C'est pas sur le forum de Sublime Text qu'il faudrait poster ça ? Visiblement tes lignes de commande sont bonnes puisque ça marche depuis le terminal, donc... cela n'a vraiment rien à voir avec SFML.
Laurent Gomila - SFML developer

DrPapino

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Re : Sublime Text - commande Linux
« Réponse #2 le: Juin 21, 2016, 09:24:27 pm »
Dans la mesure où ça concerne aussi la SFML, je me disais que, peut-être, je pourrais trouver un bout de solution ici ;)

Jvais chercher autre part, alors :-[

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Sublime Text - commande Linux
« Réponse #3 le: Juin 21, 2016, 10:04:00 pm »
Tu n'as même pas indiqué quelle erreur tu rencontrais.
Laurent Gomila - SFML developer

Bilt

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : Sublime Text - commande Linux
« Réponse #4 le: Juin 21, 2016, 10:09:09 pm »
Bonjour DrPapino,

En effet travailler sur Sublime Text est un véritable plaisir, pour ma part je l'utilise plus pour tout ce qui est php, html. Es-tu sûr que l'on puisse build à partir de cet éditeur ? (Vraisemblablement on a un "build" dans le menu, peut être faut-il une licence et non une version d'évaluation ?)

Cordialement.

DrPapino

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Re : Sublime Text - commande Linux
« Réponse #5 le: Juin 21, 2016, 10:45:14 pm »
Citer
Tu n'as même pas indiqué quelle erreur tu rencontrais.

Eh bien la première ligne ("cmd" : ["g++", "-c", "${file}", "-I/Volumes/DATA/SFML/include"]) crée mon main.o, comme je le lui demande. Jusque là, tout va bien. Je supprime mon fichier main.o, et je continue :

Quand j'ajoute la deuxième ligne ("cmd" : ["g++", "${file_path}/${file_base_name}.o", "-o", "sfml-app", "-L/Volumes/DATA/SFML/lib", "-lsfml-graphics", "-lsfml-window", "-lsfml-system"]) j'obtiens une erreur comme quoi main.o n'existe pas. Et effectivement, il semblerait qu'ajouter la deuxième ligne empêche la première de s'exécuter.

Qu'à cela ne tienne ! Je change le code en :
"cmd": ["g++", "${file}", "-I/Volumes/DATA/SFML/include", "-o", "${file_base_name}", "-L/Volumes/DATA/SFML/lib", "-lsfml-graphics", "-lsfml-window", "-lsfml-system"]
.. ce qui me crée un fichier main :)

On peut passer à l'étape suivante ! Je supprime ce fichier main, et j'écris :
"cmd": ["bash", "-c", "export LD_LIBRARY_PATH=/Volumes/DATA/SFML/lib"]
Et là c'est le drame, aucun fichier main n'est créé :'(

Peut-être que le problème vient du fait qu'il y a plusieurs commandes, alors qu'il n'en faudrait qu'une seule ?

Citer
Es-tu sûr que l'on puisse build à partir de cet éditeur

Ouaip, enfin c'est prévu pour quoi. On peut même créer nos propres builder, comme j'essaie de le faire ^^

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Sublime Text - commande Linux
« Réponse #6 le: Juin 22, 2016, 07:42:24 am »
Du coup, je ne connais pas ce système, mais la logique voudrait que tu fasses ceci non ?

"cmd" : [
    "g++ -c main.cpp -I/Volumes/DATA/SFML/include",
    "g++ main.o -o sfml -L/Volumes/DATA/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system",
    "export LD_LIBRARY_PATH=/Volumes/DATA/SFML/lib && ./sfml"
]

(en remplaçant pas les variables correspondantes -- pas le temps de le faire)
« Modifié: Juin 22, 2016, 07:44:18 am par Laurent »
Laurent Gomila - SFML developer

DrPapino

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
Re : Sublime Text - commande Linux
« Réponse #7 le: Juin 22, 2016, 05:44:50 pm »
Re,

L'idée est là ouais, mais en fait après avoir fait plus de recherches le problème vient du fait qu'on ne peut exécuter qu'une commande pendant le build, et pas plus. Ta solution ne convient pas, parce que les virgules ne sont pas traduites par un "entrer", en gros. C'est comme si on écrivait tout à la suite, du coup la commande passe pas.

Il y a quand même une solution, je la présente au cas où :) Il faut créer un petit fichier Makefile, dans le répertoire où est présent le main.cpp.

Le fichier make :

SFML_DIR=/Volumes/DATA/SFML

LIBDIR=$(SFML_DIR)/lib

CFLAGS=-I$(SFML_DIR)/include

LIBS=-lsfml-graphics -lsfml-window -lsfml-system

default: sfml
        LD_LIBRARY_PATH=$(LIBDIR) ./sfml

sfml: main.o
        g++ -o sfml -L$(LIBDIR) $(LIBS) main.o

main.o: main.cpp
        g++ -c main.cpp $(CFLAGS) -o main.o

run: sfml
        LD_LIBRARY_PATH=$(LIBDIR) ./sfml

Voili voilou !
« Modifié: Juin 22, 2016, 07:32:53 pm par DrPapino »