Thiết lập môi trường proxy với CMAKE_PROJECT_INCLUDE_BEFORE
Dùng tệp include dự án sớm khi trình bao cho phép tham số CMake nhưng không lộ môi trường khởi chạy.
Trình bao biên dịch có thể cho phép bạn thêm tham số CMake trong khi ẩn môi trường dùng để khởi chạy CMake. Một hook dự án sớm cho bạn một chỗ duy nhất để cung cấp các giá trị proxy của tiến trình cấu hình.
Lưu một tệp nhỏ ở đường dẫn tuyệt đối ổn định, ví dụ /home/alex/cmake/proxy-env.cmake:
set(ENV{http_proxy} "http://proxy.example:8080")
set(ENV{https_proxy} "http://proxy.example:8080")Truyền tệp đó cho cấu hình:
cmake -S . -B build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/alex/cmake/proxy-env.cmakeCMAKE_PROJECT_INCLUDE_BEFORE đưa tệp vào đầu mỗi lần gọi project(). Vì vậy nó chạy sớm hơn CMAKE_PROJECT_INCLUDE, vốn chạy ở cuối lần gọi đó. Sự khác biệt này quan trọng khi phần thiết lập ngôn ngữ hoặc một dự án lồng nhau cần tuyến này.
Đối với các lượt tải xuống công khai tại thời điểm cấu hình được cho phép qua một trung gian công khai, hãy chọn các giá trị URL HTTP từ danh sách proxy HTTP. Hook vẫn không thể ảnh hưởng đến công việc đã chạy trước đó, kể cả một lượt tải xuống trước lần gọi project() đầu tiên. Nó cũng không ghi một thiết lập môi trường lâu dài của hệ điều hành.
Các tiến trình được tiến trình CMake này khởi chạy sau đó có thể kế thừa các giá trị, miễn là ứng dụng mạng của chúng hỗ trợ. Một bản build chạy riêng sau đó có môi trường của riêng nó. Một lượt tải xuống bị hoãn sang giai đoạn build đó cũng phải nhận proxy tại đó.
Giữ tệp hook bên ngoài cây mã nguồn công khai khi nó chứa chi tiết kết nối riêng tư. Tham số -D lưu đường dẫn hook dưới dạng biến CMake; set(ENV{...}) thay đổi môi trường của tiến trình đang chạy thay vì biến một biến bộ nhớ đệm thành thiết lập proxy.