وضع متغيرات البيئة في حدث ما قبل البناء واستخدامها في خطوة التجميع

StackOverflow https://stackoverflow.com/questions/419979

سؤال

في Visual Studio 2003 ، أحاول تعيين متغير البيئة في حدث ما قبل المبنى الذي سيتم استخدامه بعد ذلك في خطوة التجميع ، ولكن يبدو أن القيمة لا يتم نشرها. على سبيل المثال ، إذا كان حدث ما قبل البناء يحتوي على هذا (إما مباشرة أو داخل ملف دفعة):

set MY_LIB_VERSION=1.0.0

و EnterIncludedirections لديه هذا:

c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include

ثم أتوقع أن يعمل التجميع إذا my_lib_v1.0.0 الدليل موجود. لكن بدلاً من ذلك ، أحصل

c:\path\to\prog\my_prog.c(22) : fatal error C1083: Cannot open include file: 'my_lib.h'
Project : warning PRJ0018 : The following environment variables were not found:
$(MY_LIB_VERSION)

أستنتج أن متغير البيئة المحدد في حدث ما قبل البناء لا يتم نشره على خطوة التجميع ، لكنني قد أفتقد شيئًا ما.

كيف يمكنني ضبط متغير البيئة في حدث ما قبل البناء واستخدامه في خطوة التجميع؟

(بدلاً من ذلك ، فإن أي طرق أخرى معقولة لتحديد إصدار المكتبة مرة واحدة واستخدامها عدة مرات لمضادات الإضافات الإضافية والمضافات الإضافية ، ستفعل ذلك أيضًا.)


تحديث: انتهى بي إلى حل مشكلتنا بطريقة مختلفة. نحن نستخدم التخريب ، وإعداد svn:externals خاصية على دليل فرعي لمصدر المشروع المسمى dependencies, ، بحيث ستتحقق الخروج من المشروع بشكل إضافي <svn_path>\libraries\my_lib_v1.0.0 ونسميها dependencies\my_lib في نسخة العمل. ثم يمكن أن تشير إعدادات المشروع إلى dependencies\my_lib\include ومثل هذا. الترقية إلى الإصدار 1.0.1 من my_lib ثم ببساطة مسألة تحرير svn:externals الخاصية - لا تحتاج إعدادات الكود والإعدادات إلى التغيير.

هل كانت مفيدة؟

المحلول

قد ترغب في التحقيق في هذه الأداة: http://workspacewhiz.com/solutionbuildenvironmentreadme.html

نستخدمه طوال الوقت لإدارة متغيرات البيئة في بيئة البناء لدينا.

نصائح أخرى

يجب أن أعترف أنني لم أحاول أبدًا تعيين متغيرات البيئة في خطوة ما قبل البناء ، وأستطيع أن أرى سبب عدم عملها بالضرورة (من المرجح أن يؤدي تشغيل ملف دفعي إلى عملية منفصلة ، بينما تريد ذلك معالجة بيئة عملية الوالدين).

يتمثل حل البديل الذي كنت أستخدمه ، ولكنه لن يعمل إلا عندما يمكنك تحديد الإعدادات اللازمة قبل بدء Visual Studio ، هو إنشاء ملف دفعي يضع متغيرات البيئة اللازمة ثم يبدأ Visual Studio مع ملف الحل المناسب. لقد استنسخت الهيكل العظمي لهذا الملف الدُفعات أدناه:

REM
REM Set up VS environment with defaults (this is for 2008) - need to do this first
REM
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
REM
REM Set the environment variables required by the project
REM
set BOOST_BASE=C:\Boost\include\boost-1_35
REM
REM If you need to manipulate the path, do it here
REM
REM
REM Finally, start VS with the appropriate solution file
REM
devenv MyProjectWithBoost.sln

تعد متغيرات البيئة التي يتم تعيينها باستخدام الأمر SET مؤقتًا وتستمر فقط لعمر العملية التي يتم تعيينها فيها. تنتهي صلاحيتها على الفور عندما تنتهي العملية - ولا يمكن رؤيتها بواسطة عمليات أخرى.

حدث Visual Studio قبل بناء عملية منفصلة. بمجرد أن تنتهي صلاحية هذه العملية ، يتوقف متغير البيئة.

هل أنت متأكد من أن متغيرات البيئة هي ما تريد؟ هل يمكنك القيام بذلك عن طريق تعيين قيمة في ملف نصي محتجز على موقع الشبكة المركزية؟

تعديل: إذا كنت ترغب حقًا في تغيير متغيرات البيئة باستمرار في Windows ، فيمكنك القيام بذلك ولكنها ستشمل الاتصال في بعض واجهات برمجة تطبيقات Windows بدلاً من مجرد الاتصال. على سبيل المثال http://code.activestate.com/recipes/416087/

جرب Googling نوافذ متغيرة البيئة تستمر

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