2017-12-20 1 views
1

cmake 자체 환경에 영향을주는 cmake에서 프로세스를 실행할 수 있습니까?cmake의 환경을 변경하는 명령을 실행하십시오.

예를 들어 pkg-config이 내 패키지를 멋지게 찾을 수 있도록 실행해야하는 PKG_CONFIG_PATH을 업데이트하는 스크립트가 있습니다. 난 그냥 쓰는 경우 : cmake의 외부는,이 작동하는 동안

find_package(PkgConfig REQUIRED) 
execute_process(COMMAND my_path_updating_script) 
pkg_check_modules(FOO REQUIRED foo) 

그러나 (pkg-config 이후 foo를 발견) :

find_package(PkgConfig REQUIRED) 
pkg_check_modules(FOO REQUIRED foo) 

이 처음 실행해야

-- Checking for module 'foo' 
-- No package 'foo' found 

실패합니다 cmake 내부에서 프로세스가 실행되고 pkg-config이 계속 실패합니다. 해당 스크립트의 변경 사항을 반영하기 위해 로컬 cmake 환경을 실제로 업데이트하는 방법이 있습니까? 아니면 새로운 환경에서 pkg_check_modules()을 실행하십시오.

답변

0

예, set($env{..} ..)으로 환경 변수를 변경할 수 있습니다. 그러나 종종 도구 호출에 올바른 인수를 전달하는 것이 좋습니다.

pkg-config 예제의 경우 두 가지 방법이이 질문에 대한 답변에 설명되어 있습니다. Add temporarily path to pkg-config within CMake script?
간략한 발췌 부분;

set(PKG_CONFIG_PATH "${PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig") 
Pkg_search_module(PKG_MYLIB mylib) 
+0

@ 배리 :이 답변을 수락 하시겠습니까? 아니면 제대로 대답하지 않았습니까? – usr1234567

관련 문제