سؤال

أنا أستخدم VS2008 ، وتطوير مشاريع C/C ++. أنا أستخدم ملف .bat لإنشاء مشاريع بلدي من سطر الأوامر (موجه أوامر VC2K8). أحتاج إلى طريقة لتضمين توجيه preprossor ديناميكيًا في وقت البناء.

أنا أستخدم Devenv للبناء من سطر الأوامر.

>devenv my\project\path\myproject.sln /build release > logs\build.log

في الواقع أريد تعيين تعريف ماكرو بناءً على معلمة سطر الأوامر إلى ملف الدُفعات. يمكنني الاحتفاظ بملفين مختلفين .vcproj ، لكن هذا يعطي مشكلة في الحفاظ على ملفات المشروع/SLN المتعددة. ملف الدُفعات الخاص بي سيؤدي إلى شيء مثل هذا ...

if (condition)
#define MYPROC_ENABLE_MYMODULE "yes" // To be included in the project.
else
#define MYPROC_ENABLE_MYMODULE "no"

أي مساعدة سيكون موضع تقدير حقا.

شكرًا.

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

المحلول

خيار واحد هو تعيين ال CL متغيرات البيئة, ، باستخدام شيء مثل:

set CL=/DMYPROC_ENABLE_MYMODULE

برنامج التحويل البرمجي C ++ (cl.exe) ستضيف محتويات CL متغير البيئة إلى سطر الأوامر عند تشغيله.

أعلم أنه يمكنك تحديد وحدات الماكرو إذا كنت تبني باستخدام msbuild, ، لكنني لست متأكدًا من أنك تستطيع أن تفعل الشيء نفسه عند الاستخدام devenv مباشرة.

نصائح أخرى

يمكنك عمل تكوينات مختلفة لحلك وتحديد أعلام المعالجات المسبقة المختلفة للتكوينات المختلفة. بعد ذلك ، ستحتاج فقط إلى تحديد التكوين في سطر الأوامر ولا حاجة لملفات حل أو لمشروع متعددة.

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