كيف يمكنني استخدام Boost.wave كمطبخ مسبق باستخدام Cmake

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

  •  25-09-2019
  •  | 
  •  

سؤال

أحاول استخدام Boost.wave كمعالج مسبق بدلاً من المعالج المسبق الذي يأتي مع المترجم. أنا غير قادر على معرفة كيفية تحقيق ذلك.

أنا أستخدم Cmake كمولد لنظام البناء وكيف يمكنني تحديد المعالج المسبق الخاص بي هو Boost.wave. يجب أن يعمل هذا على كل من Windows (MSVC) و Linux (GCC).

لم تسفر محفوظات غوغلينغ والبحث في مكدس الفائض أي إجابة


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

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

المحلول

هذه عملية من خطوتين.

أولاً ، يجب أن تخبر Cmake باستخدام Wave كأمر مخصص: استخدم Cmake's add_custom_command. بمجرد تحديد هذا الأمر ، سيتم الاحتجاج به كلما تتم مطابقة التبعيات التي حددتها للأمر المخصص.

ثانياً ، سيتعين عليك معرفة جميع وحدات الماكرو المحددة مسبقًا و (النظام) تتضمن المسارات التي يستخدمها برنامج التحويل البرمجي الطبيعي. لا تعرف الموجة أي شيء عن برنامج مترجم معين. لذلك ، من أجل معالجة ملف مسبقًا بشكل صحيح لمتوجيم معين ، يجب تمرير جميع وحدات الماكرو المحددة مسبقًا (والتي يتم تحديدها مسبقًا عادةً من قبل المترجم) ويتضمن جميع النظام مسارات (والتي عادة ما تكون معروفة للمترجم لوح. إذا كان وضع كل هذه الخيارات على سطر أوامر Wave مملة جدًا (وربما يكون ذلك) ، فيمكنك إنشاء ملف ملف الخيارات للموجة (أضفها إلى سطر الأوامر مع @cfgfile). فيما يلي مثال على MSVC 2005:

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include
-D_MT
-D_MSC_VER=1400
-D_MSC_FULL_VER=140050727
-D_MSC_EXTENSIONS
-D_M_IX86

بالتأكيد ، يمكنك إضافة خيارات أخرى للموجة هنا أيضًا. إن وجود ملفات تكوين مختلفة لمجموعات مختلفة يجب أن يسهل إدارتها من داخل CMake.

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