IT박스

CMake에서 사용자 환경 변수를 검색하는 방법 (Windows)

itboxs 2020. 8. 29. 09:39
반응형

CMake에서 사용자 환경 변수를 검색하는 방법 (Windows)


CMAKE에서 일반 시스템 전체 환경 변수를 검색하는 방법을 알고 있습니다.

$ENV{EnvironmentVariableName}

하지만 사용자 특정 환경 변수를 검색 할 수 없습니다. 가능하고 어떻게?


CMake 스크립트에 변수 가져 오기

cmake 호출을 사용하여 행에 변수를 전달할 수 있습니다.

FOO=1 cmake

또는 BASH에서 변수를 내 보내면 :

export FOO=1

그런 다음 다음을 사용하여 cmake 스크립트에서 선택할 수 있습니다.

$ENV{FOO}

자체를 호출 하여 크로스 플랫폼 방식으로이 작업을 수행 할 수도 있습니다 .

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에서 비어 있습니다.


시스템 속성을 사용하여 수정 한 환경 변수는 새 하위 셸을 만들 때만 하위 셸로 전파됩니다.

사용자 환경 변수를 변경할 때 명령 줄 프롬프트 (DOS 또는 cygwin)를 연 경우에는 표시되지 않습니다.

사용자 설정을 변경 한 후 새 명령 줄 프롬프트를 열어야합니다.

Unix / Linux에서 이에 상응하는 것은 .bash_rc에 한 줄을 추가하는 것입니다. 값을 얻으려면 새 셸을 시작해야합니다.

참고 URL : https://stackoverflow.com/questions/690223/how-to-retrieve-a-user-environment-variable-in-cmake-windows

반응형