GNU Autotools: كيف يمكنك تضمين ملفات المصدر في Tarball "جعل Dist" Tarball فوق الدليل المصدر للجذر؟

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

سؤال

لدي مشروع Subvision يستخدم AutoTools GNU (أي أو السيارات أو أوتوكونف، و Libtool) لإدارة شفرة المصدر داخل مجلد فرعي (يسمى "Subpackage"). المراجع الفرعية تشير الملفات الموجودة أعلى من دليل مصدر الجذر Subpackage، وهي شائعة في البرامج الفرعية الأخرى. لسوء الحظ، عند تشغيل "جعل DIST" لإنشاء Tarball Tarball، لا يتم تضمين ملفات المصدر المشتركة في التوزيع.

هل هناك طريقة لاستخدام Autoconf / Automake لتحريك هذه الملفات المصدر الشائعة في دليل فرعي من التضخم الضوئي قبل توزيع المصدر، وللتعديل في Makefile ضبط نفسه بشكل صحيح إلى الملفات المصدر المقلية؟ بوضوح، سيكون من الممكن أن يكون لديك Makefile نقل الملفات المصدر هذه قبل تجميعها، ولكن للعمل داخل مستودع التخريب، يؤدي ذلك إلى مشاكل لأن هذه الملفات التي تم نقلها يتم التحكم فيها مراجعة، وسهلة تحرير الملف الذي تم نقله بسهولة بدلا من الأصل وبعد

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

المحلول

بدلا من نقل الملفات حولها (التي تبدو دائما مصبحة بالنسبة لي)، لماذا لا تستخدم الروابط الرمزية؟ هل يمكن أن يكون لديك المرجع الفرعي الخاص بك الملفات المحلية فقط، و Makefile قاعدة تقول "إذا لم تكن الملفات المحلية هنا، فقم بإنشاء رابط رمزي لملف الأصل". خلال make dist, ، سيتم تحويل الرابط الرمزي إلى ملف عادي تلقائيا.

نصائح أخرى

يمكن أن يكون لديك دليل فارغ في الحجم الفرعي، ودعا، "Common"، مع Makefile يقوم بنسخ الملفات الخارجية. ثم يمكنك استخدام هدف Hook District لنقل الملفات مباشرة إلى إصدار دليل "Common" سيحصل ذلك على مضغوط في Tarball. وبهذه الطريقة لا داعي للقلق بشأنها ملقاة وتحريرها. سوف تقوم أيضا بالكتابة فوق Makefile.am، Makefile.in و Makefile في "Common" كما قمت بنسخها.

مثال في subpackage / common / makefile.am (غير مختبر):

dist-hook:
    cp -p $(top_srcdir)/../common/Makefile* $(top_srcdir)/../common/*.[ch] $(distdir)

أنا لست متأكدا 100٪ هذا سيعمل على الرغم من ذلك. قد يكسر بقية الحزمة الخاصة بك، اعتمادا على حيث يتوقع كل شيء آخر العثور على تلك الملفات المصدر؛ ربما سيؤدي ذلك إلى كسر الحصى إذا قمت بفك ضغط التلوتال وحاول جعل الوقاية من هناك. يجب أن تعرف أن هذا النوع من الخداع هو عبوس. ولكن آمل أن أعطيتك أفكارا كافية للعب معها.

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