Το CMake διαμορφώνεται με επιτυχία. Η κατασκευή ξεκινά αργότερα, προσπαθεί να κατεβάσει μια εξωτερική εξάρτηση και αποτυγχάνει στον διακομιστή μεσολάβησης. Η προηγούμενη επιτυχία δεν είχε απαραίτητα εκτελέσει καθόλου εκείνη τη λήψη.

Το ExternalProject_Add() δημιουργεί βήματα που μπορούν να εκτελεστούν κατά την κατασκευή. Η διεργασία που εκκινεί αυτά τα βήματα μπορεί να έχει διαφορετικό περιβάλλον από το τερματικό ή το IDE που διαμόρφωσε το κύριο έργο. Αυτή η διαφορά είναι εύκολο να διαφύγει στο CI, όπου η διαμόρφωση και η μεταγλώττιση μπορεί να είναι ξεχωριστές εργασίες.

Εντοπίστε τη λειτουργία δικτύου

Μην υποθέτετε ότι η ρύθμιση μεσολάβησης για ένα πρόγραμμα διαμορφώνει και τα τρία. Διαβάστε την εντολή και το σφάλμα του βήματος που απέτυχε πριν αλλάξετε το URL της εξάρτησης.

Αν ο επιλεγμένος λήπτης υποστηρίζει μεταβλητές περιβάλλοντος μεσολάβησης, δώστε τις στη διεργασία που εκτελεί πραγματικά αυτό το βήμα. Για δημόσιες λήψεις των οποίων ο πελάτης δέχεται HTTP μεσολάβηση, η λίστα HTTP μεσολάβησης προσφέρει υποψήφια σημεία πρόσβασης όταν επιτρέπεται αυτή η διαδρομή. Η μετάδοση μιας συνηθισμένης μεταβλητής cache του CMake με παρόμοιο όνομα δεν είναι αυτόματα το ίδιο με τον ορισμό μεταβλητής περιβάλλοντος θυγατρικής διεργασίας.

Διατηρήστε και τη διάκριση από το FetchContent: ο συνήθης εμπλουτισμός εξαρτήσεών του συμβαίνει κατά τη διαμόρφωση, οπότε μια συνταγή που λειτουργεί εκεί δεν τεκμηριώνει το περιβάλλον ενός βήματος κατασκευής ExternalProject.

Μια παλιά απάντηση που προτείνει προσαρμοσμένο λήπτη για να παρακάμψει έναν ιστορικό περιορισμό ανακατεύθυνσης δεν αποτελεί απόδειξη ότι κάθε σύγχρονη αποτυχία χρειάζεται νέα εντολή λήψης. Ελέγξτε αν το τρέχον σφάλμα είναι ανακατεύθυνση, έλεγχος ταυτότητας μεσολάβησης, εμπιστοσύνη πιστοποιητικού ή απλή προσβασιμότητα. Διατηρήστε το αναμενόμενο hash αρχείου και την επικύρωση TLS όσο διορθώνετε τη σχετική διαδρομή.

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