CMAKE'de normal bir makine geniş ortam değişkeninin nasıl alınacağını biliyorum
$ENV{EnvironmentVariableName}
ancak kullanıcıya özel bir ortam değişkeni alamıyorum. Mümkün mü ve nasıl?
CMAKE'de normal bir makine geniş ortam değişkeninin nasıl alınacağını biliyorum
$ENV{EnvironmentVariableName}
ancak kullanıcıya özel bir ortam değişkeni alamıyorum. Mümkün mü ve nasıl?
Yanıtlar:
Cmake çağrısı ile satırda bir değişken geçirebilirsiniz:
FOO=1 cmake
veya BASH'de bir değişkeni dışa aktararak:
export FOO=1
Daha sonra şunu kullanarak bir cmake betiğinden alabilirsiniz:
$ENV{FOO}
Ayrıca çağırabilirsiniz cmake bunu platformlar arası bir şekilde yapmak için:
cmake -E env EnvironmentVariableName="Hello World" cmake ..
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
Komutu değiştirilmiş bir ortamda çalıştırın.
Sadece farkında bu sadece ilk kez işe olabileceğini. CMake, ardışık derlemelerden biriyle yeniden yapılandırırsa (örneğin make
, biri CMakeLists.txt
değiştirildi ve CMake yeniden üretim sürecinden geçer), kullanıcı tanımlı ortam değişkeni artık orada olmayabilir (sistem genelinde ortam değişkenlerine kıyasla).
Bu yüzden projelerimdeki bu kullanıcı tanımlı ortam değişkenlerini bir CMake önbelleğe alınmış değişkene aktarıyorum:
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}")
Referans
Değişkenlerinizi dışa aktarmanız gerekir. Örneğin Linux'ta:
export EnvironmentVariableName=foo
Dışa aktarılmayan değişkenler CMAKE'de boş.
IF($ENV{COVERAGE}) ... END()
, başlatma: COVERAGE=1 cmake ..
. Kabul ediyorum, içeriği kontrol etmiyorum ve kontrol edip edemeyeceğini bilmiyorum. Ancak tanımlanmış olup olmadığını test etmek için kesinlikle işe yarar!
Ortam değişkenleri (Sistem Özelliklerini kullanarak değiştirdiğiniz) yalnızca yeni bir alt kabuk oluşturduğunuzda alt kabuklara yayılır.
Kullanıcı ortam değişkenlerini değiştirdiğinizde açık bir komut satırı isteminiz (DOS veya cygwin) varsa, görünmezler.
Kullanıcı ayarlarını değiştirdikten sonra yeni bir komut satırı istemi açmanız gerekir.
Unix / Linux'taki eşdeğer, .bash_rc dosyanıza bir satır eklemektir: değerleri almak için yeni bir kabuk başlatmanız gerekir.
SET var_name=var_value
için, geçerli DOS oturumundaki ortam değişkenini ayarlamak için veya SETX var_name var_value
kalıcı olarak ayarlamak için de çalıştırabilirsiniz : bkz. Set ve setx . yerel ayarlamak da ilginç olabilir.
source ~/.bashrc
değiştirilen .bashrc
dosyayı yeniden çalıştırmak ve yeni değerleri mevcut oturumunuza almak için de çalıştırabilirsiniz .