Le problème
Dans une configuration d’exécution (GoLand 2018.3 EAP) make, les tâches trouvées
depuis le Makefile trouvent bien le binaire go sur macOS, mais pas sur Ubuntu,
provoquant des erreurs d’exécution comme celle-ci:
| |
| |
En avant pour la correction…
Le diagnostic
Sur la ligne de commande, que donne la même instruction ?
| |
Aucune erreur, la compilation se passe bien: c’est donc un problème de chemin
dans GoLand ou dans le greffon pour Make.
Vérifions dans le Makefile:
| |
| |
Donc, au moins sur cette version, la variable PATH n’est pas prise en compte.
Corrigeons cela.
La solution
Évidemment, il serait possible de simplement ajouter le répertoire des binaires
Go aux diverses tâches Make (donc dans le Makefile) des cibles de cette
configuration d’exécution, mais puisque ce n’est pas nécessaire dans d’autres
environnements, mieux vaut simplement rappeler à GoLand d’ajouter ce chemin à la
configuration d’exécution.
- Exécuter
echo $PATHen ligne de commande. - Modifier la configuration d’exécution
- Modifier le champ
Environment variables - Ajouter une définition pour la variable d’environnement
PATH, copiée/collée depuis le résultat de la première commande - Appliquer les changements et fermer le dialogue
Bizarreries
Comme à l’accoutumée, make a son charme propre, et requiert que le nom de
la variable soit utilisé entre accolades pour être reconnu, au lieu d’utiliser
un simple $PATH.
Tenter de modifier la variable PATH en ajoutant simplement quelque chose comme
$PATH:/usr/local/go/bin ou ${PATH}:/usr/local/go/bin au lieu d’en coller la
valeur ne fonctionne pas:
- dans le premier cas,
makereçoit le résultat de l’évaluation de$P, et lui concatène la chaîneATH, de sorte que les autres binaires situées dans des répertoires autres que/usr/local/go/binsont inaccessibles - dans le second,
makedétecte une variable se référençant elle-même, et abandonne la tâche