ਬਿਲਡ ਰੈਪਰ ਤੁਹਾਨੂੰ CMake ਆਰਗਿਊਮੈਂਟ ਜੋੜਨ ਦੇ ਸਕਦਾ ਹੈ, ਪਰ ਜਿਸ ਵਾਤਾਵਰਣ ਵਿੱਚ CMake ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਉਸਨੂੰ ਲੁਕਾਉਂਦਾ ਹੈ। ਸ਼ੁਰੂਆਤੀ ਪ੍ਰੋਜੈਕਟ ਹੁੱਕ ਤੁਹਾਨੂੰ ਕਾਨਫਿਗਰ ਪ੍ਰਕਿਰਿਆ ਦੇ ਪ੍ਰੌਕਸੀ ਮੁੱਲ ਦੇਣ ਲਈ ਇੱਕ ਥਾਂ ਦਿੰਦਾ ਹੈ।

ਇੱਕ ਛੋਟੀ ਫ਼ਾਈਲ ਸਥਿਰ, ਸੰਪੂਰਨ (absolute) ਪਥ ਉੱਤੇ ਸੰਭਾਲੋ, ਉਦਾਹਰਨ ਲਈ /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 ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ HTTP URL ਮੁੱਲ ਚੁਣੋ। ਹੁੱਕ ਫਿਰ ਵੀ ਆਪਣੇ ਤੋਂ ਪਹਿਲਾਂ ਹੋਏ ਕੰਮ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ, ਪਹਿਲੀ project() ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਦੇ ਡਾਊਨਲੋਡ ਸਮੇਤ। ਇਹ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਦੀ ਸਥਾਈ ਵਾਤਾਵਰਣ ਸੈਟਿੰਗ ਵੀ ਨਹੀਂ ਲਿਖਦਾ।

ਇਸ CMake ਪ੍ਰਕਿਰਿਆ ਵੱਲੋਂ ਬਾਅਦ ਵਿੱਚ ਸ਼ੁਰੂ ਕੀਤੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਮੁੱਲ ਵਿਰਾਸਤ ਵਿੱਚ ਲੈ ਸਕਦੀਆਂ ਹਨ, ਬਸ਼ਰਤੇ ਉਨ੍ਹਾਂ ਦੇ ਨੈੱਟਵਰਕ ਕਲਾਇੰਟ ਸਮਰਥਨ ਕਰਦੇ ਹੋਣ। ਬਾਅਦ ਵਿੱਚ ਵੱਖਰੇ ਤੌਰ ’ਤੇ ਸ਼ੁਰੂ ਕੀਤੇ ਬਿਲਡ ਦਾ ਆਪਣਾ ਵਾਤਾਵਰਣ ਹੁੰਦਾ ਹੈ। ਉਸ ਬਿਲਡ ਪੜਾਅ ਤੱਕ ਮੁਲਤਵੀ ਕੀਤੇ ਡਾਊਨਲੋਡ ਨੂੰ ਵੀ ਉੱਥੇ ਆਪਣੀ ਪ੍ਰੌਕਸੀ ਮਿਲਣੀ ਚਾਹੀਦੀ ਹੈ।

ਹੁੱਕ ਫ਼ਾਈਲ ਵਿੱਚ ਨਿੱਜੀ ਕਨੈਕਸ਼ਨ ਵੇਰਵੇ ਹੋਣ ਤਾਂ ਇਸਨੂੰ ਜਨਤਕ ਸਰੋਤ ਰੁੱਖ ਤੋਂ ਬਾਹਰ ਰੱਖੋ। -D ਆਰਗਿਊਮੈਂਟ ਹੁੱਕ ਪਥ ਨੂੰ CMake ਵੇਰੀਏਬਲ ਵਜੋਂ ਸੰਭਾਲਦਾ ਹੈ; set(ENV{...}) ਚੱਲ ਰਹੀ ਪ੍ਰਕਿਰਿਆ ਦਾ ਵਾਤਾਵਰਣ ਬਦਲਦਾ ਹੈ, ਕੈਸ਼ ਵੇਰੀਏਬਲ ਨੂੰ ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗ ਵਿੱਚ ਨਹੀਂ ਬਦਲਦਾ।

ਸੰਬੰਧਿਤ ਲੇਖ