Build wrapper-ը կարող է թույլ տալ ավելացնել CMake արգումենտներ, միաժամանակ թաքցնելով այն միջավայրը, որտեղ գործարկվում է CMake-ը։ Վաղ նախագծի hook-ը տալիս է մեկ տեղ, որտեղ կարող եք տրամադրել կարգավորման գործընթացի պրոքսի արժեքները։

Պահպանեք փոքր ֆայլ կայուն բացարձակ ուղու վրա, օրինակ՝ /home/alex/cmake/proxy-env.cmake:

set(ENV{http_proxy} "http://proxy.example:8080")
set(ENV{https_proxy} "http://proxy.example:8080")

Փոխանցեք այդ ֆայլը կարգավորմանը՝

cmake -S . -B build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/alex/cmake/proxy-env.cmake

CMAKE_PROJECT_INCLUDE_BEFORE-ը ներառում է ֆայլը յուրաքանչյուր project() կանչի սկզբում։ Այն հետևաբար աշխատում է ավելի վաղ, քան CMAKE_PROJECT_INCLUDE-ը, որը աշխատում է այդ կանչի վերջում։ Այս տարբերությունը կարևոր է, երբ լեզվի կարգավորումը կամ ներդրված նախագիծը պահանջում է այդ ուղին։

Կարգավորման պահին հանրային միջնորդի միջոցով թույլատրված հանրային ներբեռնումների համար ընտրեք HTTP URL արժեքները HTTP պրոքսիների ցանկից։ Hook-ը դեռ չի կարող ազդել իրենից առաջ կատարված աշխատանքի վրա, ներառյալ առաջին project() կանչից առաջ եղած ներբեռնումը։ Այն նաև չի գրում օպերացիոն համակարգի մշտական միջավայրի կարգավորում։

Այս CMake գործընթացի կողմից ավելի ուշ գործարկված գործընթացները կարող են ժառանգել արժեքները, պայմանով, որ նրանց ցանցային հաճախորդները դրանք աջակցում են։ Ավելի ուշ՝ առանձին գործարկված build-ը ունի իր միջավայրը։ Այդ build փուլին հետաձգված ներբեռնումը պետք է այնտեղ նույնպես ստանա իր պրոքսին։

Պահեք hook ֆայլը հանրային source tree-ից դուրս, երբ այն պարունակում է մասնավոր միացման մանրամասներ։ -D արգումենտը պահպանում է hook-ի ուղին որպես CMake փոփոխական. set(ENV{...}) փոխում է աշխատող գործընթացի միջավայրը՝ cache փոփոխականը պրոքսի կարգավորման վերածելու փոխարեն։

Առնչվող հոդվածներ