سؤال

أود إعادة تسمية ملف المثبت الذي ينتجه كباك (الإصدار 2.8.7) لتضمين رقم إصدار يتم الحصول عليه في وقت الإنشاء من نظام التحكم في الإصدار.يبدو أن هذا لا يمكن القيام به عن طريق تعيين متغيرات كباك* لأن ذلك يحدث في وقت "كماك".

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

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

كيف يمكن القيام بذلك?

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

المحلول

مع القليل من المساعدة من القائمة البريدية CMAKE، اكتشفت كيفية القيام بذلك، باستخدام التخريب.

cmakelists.txt giveacodicetagpre.

إنشاء cpackoptions.cmake giveacodicetagpre.

cpackoptions.cmake.in giveacodicetagpre.

نصائح أخرى

لماذا لا استخراج بناء المعلومات من فس في كماك الوقت?ثم يمكنك بسهولة تعديل اسم الملف الخاص بك لتضمين رقم الإصدار الخاص بك.

مكافأة إضافية:عند القيام بذلك في كماك الوقت ، يمكنك على سبيل المثال.ملء " التمهيدي.تكست " ملف مع جيت-إنفو باستخدام كماك تكوين الملف وإضافته إلى الحزمة الخاصة بك.أو ربما استخدامه لملء " التكوين.ح " ، والذي يستخدم في البنيات الخاصة بك.

مثال: في واحدة من المشاريع الخاصة بي ، لدي قطعة صغيرة من رمز كماك الذي يجد جيت واستخراج التجزئة تشانجيسيت الحالية من مستودع شفرة المصدر.قد لا يكون أفضل طريقة جيت لاستخراج المعلومات ، لكنه يعمل بالنسبة لي...

# First try to find the git-executable
find_program( Git_EXECUTABLE NAMES git git.cmd PATHS
    ${Git_DIR}
    ENV PATHS
    $ENV{Git_DIR}
)
# Run "git log -n 1 --pretty="%h" for the current commit-hash
execute_process( COMMAND ${Git_EXECUTABLE} "log" "-n" "1" "--pretty=\"%h\"" 
                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
                 OUTPUT_VARIABLE Git_Commit_Hash 
                 OUTPUT_STRIP_TRAILING_WHITESPACE
                 )
# and use a regex to strip quotes.
string( REGEX REPLACE "^\"(.*)\"$" "\\1" Git_Commit_Hash ${Git_Commit_Hash} )

ستكون النتيجة أ Git_Commit_Hash متغير مع قيمة التجزئة 7-شار ، والذي يستخدم عند إعداد كباك:

set( CPACK_PACKAGE_NAME "MyProject" )
message( STATUS "    CPack options: " ${CPACK_PACKAGE_NAME} )
message( STATUS "    Preparing CPACK: " )
message( STATUS "      and hash: ${Git_Commit_Hash}" )

set( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${Git_Build_Version}_${CPACK_PACKAGE_VERSION}" )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top