قۇرۇلۇش قاپلىغۇچىسى سىزگە 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 جەريانى كېيىن قوزغىتىدىغان جەريانلار، ئۇلارنىڭ تور خېرىدارلىرى قوللىسا، قىممەتلەرنى مىراس ئالىدۇ. كېيىن ئايرىم قوزغىتىلغان قۇرۇلۇشنىڭ ئۆز مۇھىتى بار. شۇ قۇرۇلۇش باسقۇچىغا كېچىكتۈرۈلگەن چۈشۈرۈشمۇ ئۇ يەردە ۋاكالەتچىسىنى ئېلىشى كېرەك.

Hook ھۆججىتىدە شەخسىي ئۇلىنىش تەپسىلاتلىرى بولسا، ئۇنى ئاممىۋى مەنبە دەرىخىدىن سىرتقا ساقلاڭ. -D ئارگۇمېنتى hook يولىنى CMake ئۆزگەرگۈچىسى سۈپىتىدە ساقلايدۇ؛ set(ENV{...}) ئىجرا بولۇۋاتقان جەرياننىڭ مۇھىتىنى ئۆزگەرتىدۇ، cache ئۆزگەرگۈچىسىنى ۋاكالەتچى تەڭشىكىگە ئايلاندۇرمايدۇ.

مۇناسىۋەتلىك ماقالىلەر