CMake에서 사용자 환경 변수를 검색하는 방법 (Windows)
CMAKE에서 일반 시스템 전체 환경 변수를 검색하는 방법을 알고 있습니다.
$ENV{EnvironmentVariableName}
하지만 사용자 특정 환경 변수를 검색 할 수 없습니다. 가능하고 어떻게?
CMake 스크립트에 변수 가져 오기
cmake 호출을 사용하여 행에 변수를 전달할 수 있습니다.
FOO=1 cmake
또는 BASH에서 변수를 내 보내면 :
export FOO=1
그런 다음 다음을 사용하여 cmake 스크립트에서 선택할 수 있습니다.
$ENV{FOO}
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에서 비어 있습니다.
시스템 속성을 사용하여 수정 한 환경 변수는 새 하위 셸을 만들 때만 하위 셸로 전파됩니다.
사용자 환경 변수를 변경할 때 명령 줄 프롬프트 (DOS 또는 cygwin)를 연 경우에는 표시되지 않습니다.
사용자 설정을 변경 한 후 새 명령 줄 프롬프트를 열어야합니다.
Unix / Linux에서 이에 상응하는 것은 .bash_rc에 한 줄을 추가하는 것입니다. 값을 얻으려면 새 셸을 시작해야합니다.
'IT박스' 카테고리의 다른 글
32 비트 레지스터의 x86-64 명령어가 전체 64 비트 레지스터의 위쪽 부분을 0으로 만드는 이유는 무엇입니까? (0) | 2020.08.29 |
---|---|
Windows API 코드 팩 : 어디에 있습니까? (0) | 2020.08.29 |
@Basic (optional = false) vs @Column (nullable = false) in JPA (0) | 2020.08.29 |
코드 줄 이동 및 소실 (0) | 2020.08.29 |
관계형 데이터베이스와 비교하여 MongoDB와 같은 스키마없는 데이터베이스를 사용하면 어떤 이점이 있습니까? (0) | 2020.08.29 |