Saya tahu cara mengambil variabel lingkungan lebar mesin normal di CMAKE menggunakan
$ENV{EnvironmentVariableName}
tetapi saya tidak dapat mengambil variabel lingkungan khusus pengguna. Mungkinkah dan bagaimana caranya?
Saya tahu cara mengambil variabel lingkungan lebar mesin normal di CMAKE menggunakan
$ENV{EnvironmentVariableName}
tetapi saya tidak dapat mengambil variabel lingkungan khusus pengguna. Mungkinkah dan bagaimana caranya?
Jawaban:
Anda dapat mengirimkan variabel di baris dengan doa cmake:
FOO=1 cmake
atau dengan mengekspor variabel di BASH:
export FOO=1
Kemudian Anda dapat mengambilnya dalam skrip cmake menggunakan:
$ENV{FOO}
Anda juga bisa memohon cmake sendiri untuk melakukan ini dengan cara lintas platform:
cmake -E env EnvironmentVariableName="Hello World" cmake ..
env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
Jalankan perintah di lingkungan yang dimodifikasi.
Hanya akan menyadari bahwa ini hanya dapat bekerja pertama kalinya. Jika CMake mengonfigurasi ulang dengan salah satu build yang berurutan (Anda cukup memanggil misalnya make
, satu CMakeLists.txt
telah diubah dan CMake menjalankan proses pembuatan lagi), variabel lingkungan yang ditentukan pengguna mungkin tidak ada lagi (dibandingkan dengan variabel lingkungan sistem yang luas).
Jadi saya mentransfer variabel lingkungan yang ditentukan pengguna itu dalam proyek saya ke dalam variabel cache 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}")
Referensi
Anda harus mengekspor variabel Anda. Jadi misalnya di Linux:
export EnvironmentVariableName=foo
Variabel yang tidak diekspor kosong di CMAKE.
IF($ENV{COVERAGE}) ... END()
, doa: COVERAGE=1 cmake ..
. Memang, saya tidak memeriksa isinya, dan saya tidak tahu apakah itu akan. Tapi itu pasti berfungsi untuk pengujian apakah itu ditentukan atau tidak!
Variabel lingkungan (yang Anda modifikasi menggunakan Properti Sistem) hanya disebarkan ke subkulit saat Anda membuat subkulit baru.
Jika Anda memiliki prompt baris perintah (DOS atau cygwin) terbuka ketika Anda mengubah User env vars, maka mereka tidak akan muncul.
Anda perlu membuka prompt baris perintah baru setelah Anda mengubah pengaturan pengguna.
Yang setara di Unix / Linux adalah menambahkan baris ke .bash_rc Anda: Anda perlu memulai shell baru untuk mendapatkan nilainya.
SET var_name=var_value
untuk mengatur variabel lingkungan dalam sesi DOS saat ini, atau SETX var_name var_value
untuk mengaturnya secara permanen: lihat set dan setx . mengatur lokal mungkin juga menarik.
source ~/.bashrc
untuk menjalankan kembali .bashrc
file yang dimodifikasi dan mendapatkan nilai baru ke sesi Anda saat ini.