CMake si configura correttamente. La build inizia più tardi, tenta di scaricare una dipendenza esterna e fallisce sul proxy. Il successo precedente non necessariamente aveva esercitato quel download.

ExternalProject_Add() crea passaggi che possono essere eseguiti durante la build. Il processo che avvia tali passaggi può avere un ambiente diverso dal terminale o dall'IDE che ha configurato il progetto principale. Questa differenza è facile da trascurare in CI, dove configurazione e compilazione possono essere job separati.

Individua l'operazione di rete

Non presumere che l'impostazione del proxy per un programma configuri tutti e tre. Leggi il comando e l'errore del passaggio fallito prima di cambiare l'URL della dipendenza.

Se il downloader scelto supporta variabili d'ambiente del proxy, forniscile al processo che esegue realmente quel passaggio. Per i download pubblici il cui client accetta un proxy HTTP, la lista di proxy HTTP offre candidati endpoint quando quella rotta è consentita. Passare una normale variabile di cache CMake con un nome simile non è automaticamente lo stesso che impostare una variabile d'ambiente del processo figlio.

Mantieni anche la distinzione da FetchContent: il suo solito popolamento delle dipendenze avviene durante la configurazione, quindi una ricetta che funziona lì non stabilisce l'ambiente di un passaggio di build ExternalProject.

Una vecchia risposta che consiglia un downloader personalizzato per aggirare un limite storico di reindirizzamento non è prova che ogni errore moderno richieda un nuovo comando di download. Verifica se l'errore attuale è un reindirizzamento, un'autenticazione proxy, una fiducia nel certificato o una semplice raggiungibilità. Conserva l'hash atteso dell'archivio e la validazione TLS mentre correggi la rotta pertinente.

Articoli correlati