#1 Le 16/06/2026, à 10:03
- BrunoL
geany et rust si adressage de fichier externe relatif
Bonjour,
J'utilise geany comme EDI rust et j'en suis satisfait mais un point m'embête.
Lancer un "$cargo run" fonctionne sauf lorsque le source développé fait référence à un fichier en positionnement relatif : "./mon_fichier_conf.txt" qui donc se situe dans le répertoire de lancement du programme.
En effet, dans ce cas le répertoire de référence que l'on récupére par :
std::env::current_dir()diffère.
- Cargo renvoie le répertoire du projet,
- Geany celui du sous-répertoire src (dans lequel il a trouvé le fichier qu'il édite).
Avez-vous une solution pour lancer un "cargo run" sous geany qui réagisse comme le "cargo run" lancé en terminal sous la racine du projet ?
Je ne souhaite pas touché à l'installation standard de rust.
Merci et bonne journée.
Dernière modification par BrunoL (Le 16/06/2026, à 10:04)
Hors ligne
#2 Le 16/06/2026, à 10:24
- iznobe

Re : geany et rust si adressage de fichier externe relatif
Bonjour , faudrait peut être détaillé l ' arborescence ... sinon utiliser un chemin absolu et non relatif .
tu dois pouvoir indiquer un chemin a ta commande "cargo run" non ?
Dernière modification par iznobe (Le 16/06/2026, à 10:28)
Hors ligne
#3 Le 16/06/2026, à 10:31
- BrunoL
Re : geany et rust si adressage de fichier externe relatif
Pour l'install sur diverses machines le chemin absolu est exclu ...
C'est plus un problème de point de lancement que d'arborescence. J'ai tenté pas mal de solutions aucune fonctionne mais l'idée serait que geany lance l'action de compile dans un répertoire que je lui désignerai ... ce que je n'ai pas réussi à lui faire faire ![]()
Hors ligne
#4 Le 16/06/2026, à 10:38
- iznobe

Re : geany et rust si adressage de fichier externe relatif
ok pour le chemin relatif .
tu peut mettre en " dur " si tu bazardes le projet au complet ( c ' est ce que tu vas faire je pense ) .
Et récupérer le dossier dans lequel se situe le dossier du projet , puis construire un chemin absolu .
Par exemple , en bash ( donc dans un terminal ) :
echo $PWDte donne le chemin absolu de là où est exécuté la commande .
donc le chemin absolu du script dans lequel elle sera exécutée , si ce script est avec ton fichier rust , alors le chemin absolu sera identique .
il est fort probablement possible de faire pareil dans le langage rust , même si je ne connais pas vraiment.
Du coup , si tu as une structure relative :
projets
-- fichier script bash
-- fichier script rust$PWD # et sera de la forme : /chemin/absolu/projets est identique pour ces 2 fichiers .
suffit alors de créer et exporter les variables pour le script rust d ' une manière ou d ' une autre. ou de récupérer directement le chemin dans le script rust.
Mais je ne comprends pas vraiment le rapport avec l' IDE . lui , il voit le chemin chez toi , qui sera probablement différent chez un autre .
Mais ça n' a pas vraiment d' importance , une fois ton projet fini , OSEF de l ' IDE non ?
EDIT , d ' après ce que j' ai compris , tu as déjà l ' équivalent de $PWD :
mon_fichier_conf.txt" qui donc se situe dans le répertoire de lancement du programme.
...std::env::current_dir()- Cargo renvoie le répertoire du projet,
du coup je ne comprends pas le soucis que tu as ...
tu n' as qu ' a construire le chemin absolu toi même puisque tu as le chemin relatif dans ton fichier conf.txt .
ça existe les variables en rust non ?
tu met dans une variable le chemin absolu du projet que tu concatènes avec une partie du chemin relatif contenu dans ton " conf.txt " .
et il ne te reste plus qu ' a utiliser cette variable.
dans ton conf.txt ( ou ailleurs ) , tu peux très bien faire un truc du genre :
$exemple=./images/image_example.gif
$chemin_image_example=std::env::current_dir() + images/image_example.gif
# ou une autre possibilité :
$chemin_image_example=std::env::current_dir() + ( substract 2 1ers char , $exemple )et alors cette derniere variable contiendra le chemin absolu mais adapté a chaque cas / machine.
Dernière modification par iznobe (Le 16/06/2026, à 11:05)
Hors ligne
#5 Le 16/06/2026, à 11:20
- BrunoL
Re : geany et rust si adressage de fichier externe relatif
Le souci est que je donne un binaire ...
Je n'avais pas pensé au passage de l'adresse du fichier config en paramètre d'appel ! Mais cela est un peu crade et ne résout pas mon problème avec geany qui ne sait pas lancer un programme en lui passant des paramètres.:rolleyes:
Hors ligne
#6 Le 16/06/2026, à 17:01
- iznobe

Re : geany et rust si adressage de fichier externe relatif
je comprends toujours pas le rapport avec l ' IDE.
Que tu donnes un binaire ne change rien au code source.
c' est a toi de donner le chemin qui va bien en lançant une commande ( ou un appel a un script ).
A un moment donné , le script a acces a ce qui est défini dans ton fichier " conf.txt " ?
il te suffit donc de déterminer dans ton script le chemin basé sur une donné du conf.txt afin de lancé une commande ou un autre script , pas besoin de " passer en paramètre " .
Tu n' aurais pas un exemple concret simplifié au maximum et réaliste ?
quitte a inclure une ligne de ton fichier conf.txt et une du script qui appelle .
Pour tester ton programme , pourquoi passer par geany ? c ' est pas comme ça que ça va se passer chez les clients si ?
Dernière modification par iznobe (Le 16/06/2026, à 17:11)
Hors ligne
#7 Le 17/06/2026, à 19:33
- BrunoL
Re : geany et rust si adressage de fichier externe relatif
Désolé pour le retard.
Je reformule :
- j'ai un projet rust qui fonctionne et va chercher sa configuration applicative dans le fichier config.txt qui se trouve à la racine du projet. Là où on lance un "$cargo run" pour l'exécution.
- visant une installation par binaire la localisation de ce fichier est donc, en dur dans le code et pointe : "./config.txt"
- et tout va bien ...
- sauf que je développe avec geany qui traite bien les sources rust à un détail prés. Il lance l'exécution en partant non de la racine du projet comme cargo mais dans le sous répertoire ./src. Cela ne pose aucun problème SAUF si on cherche le fichier de config avec un chemin relatif ... à la position courante. Elle n'est plus la racineProjet mais racineProjet/src.
D'où ma demande : comment me permettre de lancer l'exécution dans geany sans modifier le source. La réponse triviale est de dire à geany de se positionner sur racineProjet pour lancer son "cargo run" et pas dans racineProjet/src mais malgré maintes recherche je n'ai pas trouver comment faire ...
J'espère que c'est plus clair. Bonne soirée.
Nota : modifier le "dossier de travail" de l'action qui lance "cargo run" dans les paramètre de geany plante car évidemment cargo ne retrouve plus ses propres billes (en pratique cargo.toml) ![]()
Dernière modification par BrunoL (Le 17/06/2026, à 19:38)
Hors ligne