Το make εκτελεί το πρόγραμμα λήψης· το πρόγραμμα λήψης επιλέγει πώς θα χρησιμοποιηθεί ένας διαμεσολαβητής. Για το GNU make, εξαγάγετε τις μεταβλητές στο επίπεδο του Makefile όταν κάθε σχετική συνταγή πρέπει να τις λάβει:

export http_proxy := http://proxy.example:8080
export https_proxy := http://proxy.example:8080

fetch:
	curl --fail --output package.tar.gz https://downloads.example/package.tar.gz

Η γραμμή της συνταγής αρχίζει με στηλοθέτη. Οι οδηγίες export ανήκουν στη σύνταξη του make και περνούν τις τιμές στο περιβάλλον των εντολών.

Ένα shell export σε μία γραμμή συνταγής συνήθως χάνεται πριν από την επόμενη γραμμή, επειδή το GNU make καλεί ξεχωριστό shell για κάθε γραμμή. Για μία εντολή, χρησιμοποιήστε ανάθεση shell απευθείας μαζί της:

fetch:
	http_proxy=http://proxy.example:8080 https_proxy=http://proxy.example:8080 curl --fail https://downloads.example/package.tar.gz

Χρησιμοποιήστε τα τεκμηριωμένα ονόματα μεταβλητών και το πρωτόκολλο διαμεσολαβητή του προγράμματος λήψης. Αν η κατασκευή μπορεί να χρησιμοποιήσει δημόσιο HTTP endpoint, διαλέξτε υποψήφιο από τη λίστα διαμεσολαβητών HTTP για αυτές τις τιμές περιβάλλοντος. Ένα εκτελέσιμο που αγνοεί αυτές τις μεταβλητές χρειάζεται δική του επιλογή διαμεσολαβητή. Τα διαπιστευτήρια καλύτερα να παρέχονται μέσω του περιβάλλοντος κατασκευής παρά να καταγράφονται στο Makefile.

Αυτές οι εξαγωγές επηρεάζουν τις θυγατρικές εντολές. Δεν αλλάζουν το περιβάλλον του γονικού τερματικού αφού τερματιστεί το make.

Σχετικά άρθρα