CMake ExternalProject ダウンロードのプロキシ設定
CMake の設定が成功したからといって、その後の依存関係ダウンロードが同じ経路を通るとは限りません。ExternalProject の背後にあるプロセスとダウンロード手順を先に特定してください。
CMake は正常に設定されます。ビルドは後から始まり、外部依存関係をダウンロードしようとしてプロキシで失敗します。以前の成功は、そのダウンロードをまったく実行していなかった可能性があります。
ExternalProject_Add() はビルド中に実行できるステップを作成します。そのステップを起動するプロセスは、メインプロジェクトを設定したターミナルや IDE とは異なる環境を持つことがあります。CI では設定とコンパイルが別ジョブになることがあり、この違いは見落とされがちです。
ネットワーク操作を特定する
- URL ダウンロードは CMake のダウンロード経路を使います。
- Git ソースは独自の対応設定を持つ Git トランスポートを呼び出します。
- カスタムの
DOWNLOAD_COMMANDはプロジェクトが指定した任意のプログラムを使います。
1 つのプログラムのプロキシ設定が 3 つすべてを設定するとは考えないでください。依存関係の URL を変える前に、失敗したステップのコマンドとエラーを読んでください。
選択したダウンローダーがプロキシ環境変数をサポートするなら、そのステップを実際に実行するプロセスに渡してください。クライアントが HTTP プロキシを受け入れる公開ダウンロードでは、その経路が許可されている場合に HTTP プロキシ一覧がエンドポイント候補を提供します。似た名前の通常の CMake キャッシュ変数を渡すことは、子プロセスの環境変数を設定することと同じではありません。
FetchContent との違いも保ってください。通常の依存関係の取得は設定時に行われるため、そこで動くレシピは ExternalProject ビルドステップの環境を証明しません。
歴史的なリダイレクト制限を回避するためにカスタムダウンローダーを勧める古い回答は、現代のあらゆる失敗に新しいダウンロードコマンドが必要だという証拠ではありません。現在のエラーがリダイレクト、プロキシ認証、証明書信頼、単なる到達不能のどれかを確認してください。該当する経路を直す際には、期待されるアーカイブハッシュと TLS 検証を保ってください。