Sublime Text, Linux et le Casio SDK
Posté le 04/09/2014 17:48
Salut à tous! En configurant un peu Sublime Text 2 (excellent éditeur de texte multi-platformes payant mais dont la version gratuite n'a juste qu'un rappel d'achat de licence en plus), j'ai réussi à configurer un mini système de build convenable pour pouvoir compiler et obtenir les erreurs depuis directement ST. (note : J'utilise wine pour lancer le SDK et je mets mes sources dans des sous-dossiers du projets, src et include.)
Dans les paramètres du projet ST, rajoutez ceci avant la ligne "folders":
"build_systems":
[
{
"cmd":
[
"$project_path/build"
],
"name": "FXSH",
"file_regex": "(?:(\\w+/\\w+\\.\\w)\\((\\d+)\\)() : \\S+ (.*)$|.*)"
}
],
Cela va rajouter un type de build "FXSH" pour le projet actuel qui lancera le programme build situé à la racine du projet. Remplacez la ligne du file_regex par
"file_regex": "(?:(\\w+\\.\\w)\\((\\d+)\\)() : \\S+ (.*)$|.*)"
Si vous n'avez des fichiers sources que dans le dossier racine du projet (celui où le .g1a sera stocké). Malheureusement, la détection ne détecte que soit les fichiers sources dans un sous-dossier soit à la racine (pas de fichiers trouvables sous "src/machin/source.c".
Le parser trouvera donc :
src/machin.c
machin/chouette.c
ou (si vous utilisez le file_regex alternatif)
main.c
test.h
Pour finir, il vous faudra un fichier script nommé build à la racine du projet; voici son contenu:
#!/bin/bash
cd $(dirname $0)
wine cmd /C FXSH_Build.bat 2>&1 | sed "s/\\\/\//g" | grep -P "(?:Build|\([E W]\)|FILE ERROR)"
Ce à quoi devrait ressembler les paramètres et le fichier build
The Game
Notez dans l'arborescence que j'ai un dossier src et un dossier include. Mes fichiers sources y sont. Du moment que les fichiers sources sont dans un dossier, ça devrait marcher. Sinon, utilisez le file_regex alternatif
(C'est un miniscript qui détecte juste les lignes d'erreur et remplace les \ par /, c'est un peu plus pratique par la suite pour que ST puisse ouvrir le bon fichier).
Une fois cela fait, vous devriez avoir un build system du nom de "FXSH" dans le menu BUild. Sélectionnez-le, puis faites Build (ou Ctrl-B). Si vous avez des erreurs, elles s'afficheront dans le log en bas de votre fenêtre et vous pourrez cliquer sur ceux pour accéder directement à l'erreur sélectionnée! Pratique, hein? Bon, je retourne coder, je vais faire quelques screenshots pour clarifier le tout. a plus!
EDIT :
Stoop! Pour le moment, je viens de constater qu'il ne détecte pas les erreurs de la forme Corrigé à la fois le regex ainsi que le script. Ca devrait marcher sans problème, ne double cliquez pas sur les lignes qui ne montrent pas d'erreur de cette forme :
** L2310 (E) Undefined external symbol "_ML_bmp_8_or" referenced in xxx
Faudra que je retravaille le script build ainsi que le regex pour nettoyer et configurer le tout convenablement. Mais pour les autres erreurs, cela marche correctement.
Citer : Posté le 07/09/2014 21:48 | #
Re-modif pour ajouter une clause dans le script qui permet d'afficher le résultat du build ainsi que si un FILE ERROR arrive.
Citer : Posté le 08/09/2014 18:23 | #
J'ai pas compris ce que ça fait ta manip'
Citer : Posté le 08/09/2014 21:55 | #
Sur linux, elle permet de lancer le batch qui lance la compilation du projet, récupère la sortie et n'affiche que le résultat ainsi que les erreurs. Si ces erreurs sont liées à une ligne dans un fichier, un double-clic sur la ligne dans la sortie t'amène directement à la ligne en question.
Citer : Posté le 08/09/2014 22:16 | #
C'est pas pour moi du coup
Citer : Posté le 09/09/2014 06:18 | #
T'as relu ce que t'as écrit là ? oO
Sur linux, elle permet de lancer le batch [...]
Va falloir détailler.
Citer : Posté le 09/09/2014 11:11 | #
T'as relu ce que t'as écrit là ? oO
Sur linux, elle permet de lancer le batch [...]
Va falloir détailler.
Regarde la structure d'un projet du SDK, il y a toujours un batch pour lancer la compilation ("FXSH_Build.bat"). Le script lance le batch en question.
En passant, une fois que j'ai fini de comprendre la doc de ST, je pourrais faire une version Windows à coup de compilation conditionnelle.
Citer : Posté le 09/09/2014 21:24 | #
Non mais tu parles de Linux là ! oO
T'as déjà vu des batchs sous Linux nom de dieu ?
Non, Darkysun, non !
Citer : Posté le 09/09/2014 21:26 | #
Ca ne suffit pas à lancer le script ? J'utilise vraiment peu Wine, je ne fais qu'un supposition ^^, je ne sais pas si LePhenixNoir "critique" le principe même d'utiliser un batch sur Linux d'un point de vue plus ou moins éthique ou si c'est autre chose :mmm:...
Citer : Posté le 09/09/2014 21:27 | #
Non mais c'est que Linux ne sait pas exécuter les batch, à la base ! oO
Et puis Eiyeron n'utilise pas Linux, son PC refuse de l'émuler ou de le booter...
Citer : Posté le 09/09/2014 21:32 | #
Non mais tu parles de Linux là ! oO
T'as déjà vu des batchs sous Linux nom de dieu ?
Non, Darkysun, non !
J'ai envie de pleurer. Un batch est un traitement de lot, un script peut être considéré comme un batch, quelque soit son langage. Donc OUI, j'ai vu -et fait- des batchs (notamment pour corriger les noms de fichiers de musiques si tu veux un exemple). excuse-moi de t'e**** avec ce terme mais je l'emploi de façon valable.
Ca ne suffit pas à lancer le script ? J'utilise vraiment peu Wine, je ne fais qu'un supposition ^^, je ne sais pas si LePhenixNoir "critique" le principe même d'utiliser un batch sur Linux d'un point de vue plus ou moins éthique ou si c'est autre chose :mmm:...
Nemhardy, oui mais non dans le cas où FXSH_Build.bat n'est pas situé au même endorit que le fichier ouvert actuel.
Si j'ai ouvert un fichier dans le dossier <projet>/src/main.c (<projet> contient les fichiers de Casio comme le g1w ou le fameux FXSH_Build.bat), Sublime va essayer d'ouvrir un FXSH_Build.bat situé en <projet>/src et pas en <projet>. Le reste de la ligne de commande n'est qu'un filtre qui ne renvoie que les erreurs et la ligne où ya marqué "Build was [not] successful".
Ajouté le 09/09/2014 à 21:33 :
Non mais c'est que Linux ne sait pas exécuter les batch, à la base ! oO
Et puis Eiyeron n'utilise pas Linux, son PC refuse de l'émuler ou de le booter...
Réussi à lancer un ancien kernel, je suis sous manjaro. Donc J'utilise wine pour lancer un cmd pour lancer le foutu batch en question.
Citer : Posté le 09/09/2014 21:35 | #
J'ai envie de pleurer. Un batch est un traitement de lot, un script peut être considéré comme un batch, quelque soit son langage
Ok, je vais pas dire que c'était inadapté, mais ça reste assez surprenant vu qu'il existe le terme générique de "script" du coup.
Réussi à lancer un ancien kernel, je suis sous manjaro.
Bonne nouvelle ça
Citer : Posté le 09/09/2014 21:37 | #
J'ai envie de pleurer. Un batch est un traitement de lot, un script peut être considéré comme un batch, quelque soit son langage
Ok, je vais pas dire que c'était inadapté, mais ça reste assez surprenant vu qu'il existe le terme générique de "script" du coup.
Etp uis c'est réellement un .bat(ch) dodoze...
Citer : Posté le 09/09/2014 21:38 | #
Oui mais alors je vois pas l'intérêt de mentionner "Linux" dans le titre du topic alors que finalement ça se passe sous windows... que tu ne fais qu'émuler.
Citer : Posté le 09/09/2014 21:40 | #
Bah non, c'est une manière d'utiliser le SDK sans à avoir par paser par une machine virtuelle, WINE est un acronyme de Wine Is Not an Emulator.
(Je vais (tenter) d'adapter le truc pour dodoze, mais ça va être chaud pour le filtrage...)
Citer : Posté le 09/09/2014 21:43 | #
Oui mais ce tuto porte tout aussi bien sous windows que sous Linux -- et nativement, cette fois.
Citer : Posté le 09/09/2014 21:46 | #
"Sublime Text, Linux et le Casio SDK". Actuellement, et sans chichis, j'emmerde Windows. Voilà, c'est dit. Je veux bien tenter de la porter (par exemple "wine cmd /C" disparaîtra) mais ça va pas être évident sur un point : ya plus de regex -_- (et le fait que dodoze demarre en 10 minutes alors que Manja en 1)
Citer : Posté le 09/09/2014 21:48 | #
ya plus de regex -_-
Ok, t'as gagné.