CMAKE에서 일반 시스템 전체 환경 변수를 검색하는 방법을 알고 있습니다.
$ENV{EnvironmentVariableName}
하지만 사용자 특정 환경 변수를 검색 할 수 없습니다. 가능하고 어떻게?
CMAKE에서 일반 시스템 전체 환경 변수를 검색하는 방법을 알고 있습니다.
$ENV{EnvironmentVariableName}
하지만 사용자 특정 환경 변수를 검색 할 수 없습니다. 가능하고 어떻게?
답변:
호출 할 수도 있습니다. cmake 크로스 플랫폼 방식으로이를 수행합니다.
cmake -E env EnvironmentVariableName="Hello World" cmake ..
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
수정 된 환경에서 명령을 실행합니다.
그냥 인식 이 처음에만 작동 할 수있다. CMake가 연속 빌드 중 하나로 재구성하는 경우 (예 : make
, 하나 CMakeLists.txt
가 변경되고 CMake가 생성 프로세스를 다시 실행 함) 사용자 정의 환경 변수가 더 이상 존재하지 않을 수 있습니다 (시스템 전체 환경 변수에 비해).
그래서 내 프로젝트의 사용자 정의 환경 변수를 CMake 캐시 변수로 전송합니다.
cmake_minimum_required(VERSION 2.6)
project(PrintEnv NONE)
if (NOT "$ENV{EnvironmentVariableName}" STREQUAL "")
set(EnvironmentVariableName "$ENV{EnvironmentVariableName}" CACHE INTERNAL "Copied from environment variable")
endif()
message("EnvironmentVariableName = ${EnvironmentVariableName}")
참고
변수를 내 보내야합니다. 예를 들어 Linux에서 :
export EnvironmentVariableName=foo
내 보내지 않은 변수는 CMAKE에서 비어 있습니다.
IF($ENV{COVERAGE}) ... END()
, 호출 : COVERAGE=1 cmake ..
. 당연히 내용을 확인하지도 않고 그럴지도 모르겠습니다. 그러나 정의 여부에 관계없이 테스트를 위해 확실히 작동합니다!
시스템 속성을 사용하여 수정 한 환경 변수는 새 하위 셸을 만들 때만 하위 셸로 전파됩니다.
사용자 환경 변수를 변경할 때 명령 줄 프롬프트 (DOS 또는 cygwin)를 연 경우에는 표시되지 않습니다.
사용자 설정을 변경 한 후 새 명령 줄 프롬프트를 열어야합니다.
Unix / Linux에서 이에 상응하는 것은 .bash_rc에 한 줄을 추가하는 것입니다. 값을 얻으려면 새 셸을 시작해야합니다.
source ~/.bashrc
실행하여 수정 된 .bashrc
파일 을 다시 실행하고 현재 세션에 새 값을 가져올 수도 있습니다.