سؤال

أعرف كيفية استرداد متغير بيئة عادي على مستوى الجهاز في 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}")

مرجع

وتحتاج إلى والمتغيرات الخاصة بك تصديرها. هكذا على سبيل المثال في لينكس:

export EnvironmentVariableName=foo

والمتغيرات Unexported فارغة في CMAKE.

يتم نشر

ومتغيرات البيئة (أي تعديل باستخدام خصائص النظام) فقط لsubshells عند إنشاء المستوى الفرعي الجديد.

إذا كان لديك موجه سطر الأوامر (DOS أو سيغوين) مفتوحة عندما قمت بتغيير فار الحياة الفطرية المستخدم، ثم انهم لن تظهر.

وتحتاج لفتح موجه سطر الأوامر جديد بعد تغيير إعدادات المستخدم.

وأي ما يعادل في يونيكس / لينكس هو إضافة خط ل.bash_rc الخاص بك: عليك أن تبدأ قذيفة جديدة للحصول على القيم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top