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 $PATH
en 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,
make
reç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/bin
sont inaccessibles - dans le second,
make
détecte une variable se référençant elle-même, et abandonne la tâche