Pengaturan proxy untuk unduhan CMake ExternalProject
Identifikasi proses dan langkah unduh di balik ExternalProject sebelum menganggap konfigurasi CMake yang berhasil membuktikan unduhan dependensi berikutnya memakai rute yang sama.
CMake berhasil dikonfigurasi. Build dimulai kemudian, mencoba mengunduh dependensi eksternal, dan gagal di proxy. Keberhasilan sebelumnya belum tentu sama sekali menjalankan unduhan itu.
ExternalProject_Add() membuat langkah yang dapat berjalan selama build. Proses yang meluncurkan langkah tersebut bisa memiliki lingkungan berbeda dari terminal atau IDE yang mengonfigurasi proyek utama. Perbedaan ini mudah terlewat di CI, tempat konfigurasi dan kompilasi bisa menjadi pekerjaan terpisah.
Lokasikan operasi jaringan
- Unduhan URL memakai jalur unduh CMake.
- Sumber Git memanggil transport Git dengan konfigurasinya sendiri yang didukung.
DOWNLOAD_COMMANDkhusus memakai program apa pun yang ditentukan proyek.
Jangan berasumsi pengaturan proxy untuk satu program mengonfigurasi ketiganya. Baca perintah dan galat langkah yang gagal sebelum mengubah URL dependensi.
Jika pengunduh yang dipilih mendukung variabel lingkungan proxy, berikan kepada proses yang benar-benar menjalankan langkah itu. Untuk unduhan publik yang kliennya menerima proxy HTTP, daftar proxy HTTP menawarkan kandidat titik akhir bila rute itu diizinkan. Meneruskan variabel cache CMake biasa dengan nama serupa tidak otomatis sama dengan menyetel variabel lingkungan proses anak.
Pertahankan juga perbedaan dari FetchContent: pengisian dependensi biasanya terjadi saat konfigurasi, jadi resep yang berhasil di sana tidak membuktikan lingkungan langkah build ExternalProject.
Jawaban lama yang menyarankan pengunduh khusus untuk mengakali batasan pengalihan historis bukan bukti bahwa setiap kegagalan modern memerlukan perintah unduh baru. Periksa apakah galat saat ini adalah pengalihan, autentikasi proxy, kepercayaan sertifikat, atau sekadar keterjangkauan. Pertahankan hash arsip yang diharapkan dan validasi TLS saat memperbaiki rute yang relevan.