سؤال

لدي هذا الصغير Qt المشروع مع ملف مشروع مثل هذا:

TEMPLATE = lib
TARGET = record32
VERSION = 0.0.1
DEPENDPATH += .
INCLUDEPATH += .

CONFIG += shared
SOURCES += recorder.cpp
HEADERS += recorder.h

عندما كنت تجميع مكتبة من قبل qmake && nmake, ، أنه يؤدي إلى الملفات

record32.obj
record320.lib
record320.dll
...

لماذا إضافية 0 إضافة إلى lib و dll الأسماء ؟

ولدت makefiles لا يبدو أن إلحاق ذلك بل مجرد افتراض ذلك ، Makefile.Release هو فقط يقول:

####### Files

SOURCES       = recorder.cpp release\moc_recorder.cpp
OBJECTS       = release\recorder.obj release\moc_recorder.obj
DIST          = 
QMAKE_TARGET  = recorder
DESTDIR        = release\ #avoid trailing-slash linebreak
TARGET         = record320.dll
DESTDIR_TARGET = release\record320.dll

كيف يمكن منع ذلك اسم بلدي المكتبات كما أتمنى ؟

(لاحظ أن إصلاح يدويا makefile.الإصدار ليس accetable الحل)

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

المحلول

انها تأتي من الجزء الأول من النسخة.إن "ليب" قالب إضافته.

المنظمة البحرية الدولية انها فكرة جيدة إدراجه في المكتبة الاسم لأنه يتجنب سيئة السمعة "DLL الجحيم" الذي يحدث على نظام ويندوز حيث هذه الاتفاقية لم يتبع دائما...من خلال تسمية ملفات المكتبة لتشمل الرئيسية رقم الإصدار, يمكن للمستخدمين الحصول على إصدارات متعددة من تثبيت البرامج سوف تستخدم الإصدارات الصحيحة في وقت التشغيل.إصدار DLL لا neccesarily تحتاج إلى أن تكون نفس المشروع الشامل الإصدار.على لينكس و ماك إصدارات يتم إلحاق اسم الملف (على سبيل المثالlibrecorder.لذلك.0.0.1)

[إذا كنت تستخدم Visual C++ أنا أيضا دائما إضافة علامة تشير إلى ما الإصدار من Visual C اعتدت منذ البرمجية التي تم إنشاؤها بواسطة إصدارات مختلفة إلى حد كبير تتعارض أيضا.]

ربما يمكنك فقط حذف التعريف من نسخة إلى تعطيل هذا السلوك, ولكن أنا لا يمكن التحقق من ذلك الآن لنظام التشغيل Windows (على لينكس ، حيث المكتبات المشتركة دائما يكون لديك الإصدار أرقام فقط يفترض الإصدار 1.0.0.)

نصائح أخرى

جرب هذا:

CONFIG += skip_target_version_ext

مفيدة خدعة:

VERSION = 0.0.1
win32:TARGET_EXT = .dll

مع هذا سوف تحصل على:

  • على لينكس:librecord.لذا, ..., librecord.لذلك.0.0.1
  • على ويندوز:record.dll
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top