سؤال

أنا أتساءل كيف يمكنني إجراء نظام بناء محمول (خطوة بخطوة)، وأستطيع حاليا استخدام cmake لأنه كان من السهل إعداده في المقام الأول، مع هدف قوس واحد فقط، ولكن الآن يجب أن حزمة مكتبة أتساءل أنا أتساءل كيف هي أفضل طريقة لجعلها محمولة للقوس أنا اختبار.

أعلم أنني بحاجة إلى config.h لتحديد الأشياء اعتمادا على القوس ولكني لا أعرف كيف يمكن أن يكون هذا التلقائي.

أي طريقة أخرى للحصول على نظام البناء موضع ترحيب بحرارة!

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

المحلول

يمكنك فقط استخدام CMAKE، إنه واضح للغاية.

تحتاج هذه الأشياء:

أولا، يعني معرفة تفاصيل التكوين. على سبيل المثال، إذا كنت تعرف أن بعض الوظائف تسمى بشكل مختلف على بعض النظام الأساسي، يمكنك استخدامها TRY_COMPILE لاكتشاف ذلك:

TRY_COMPILE(HAVE_ALTERNATIVE_FUNC 
    ${CMAKE_BINARY_DIR}
    ${CMAKE_SOURCE_DIR}/alternative_function_test.cpp
    CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx
)

أين alternative_function_test.cpp هو ملف في الدليل المصدر الخاص بك يجمع فقط مع التعريف البديل.

هذا سوف يحدد المتغير HAVE_ALTERNATIVE_FUNC إذا نجحت الترجمة.

ثانيا، تحتاج إلى جعل هذا التعريف يؤثر على مصادرك. إما يمكنك إضافته إلى تجميع الأعلام

IF(HAVE_TR1_RANDOM)
    ADD_DEFINITIONS(-DHAVE_TR1_RANDOM)
ENDIF(HAVE_TR1_RANDOM)

أو يمكنك صنع config.h ملف. خلق config.h.in مع السطر التالي

#cmakedefine HAVE_ALTERNATIVE_FUNCS

وإنشاء أ config.h ملف حسب هذا الخط في CMakeLists.txt (يرى CONFIGURE_FILE)

CONFIGURE_FILE(config.h.in config.h @ONLY)

ال #cmakedefine سوف ترجم إلى #define أو #undef اعتمادا على متغير cmake.

راجع للشغل، لاختبار اداننس، انظر هذا البريد

نصائح أخرى

لقد كنت أستخدم Toolchain GNU Autoconf / Automake الذي عمل جيدا بالنسبة لي حتى الآن. أنا فقط تركز حقا على Linux / X86 (و 64 بت) وماك، وهو أمر مهم إذا كنت تقوم ببناء على PowerPC، بسبب قضايا الإناهة.

باستخدام Autoconf، يمكنك التحقق من النظام الأساسي المضيف باستخدام الماكرو:

AC_CANONICAL_HOST

والتحقق من الانتصاف باستخدام:

AC_C_BIGENDIAN

سيقوم Autoconf بعد ذلك بإضافة تعريفات إلى Config.H التي يمكنك استخدامها في التعليمات البرمجية الخاصة بك.

أنا لست متأكدا (لم أحاول أبدا) مدى جودة عمل GNU Autools على Windows، لذلك إذا كان Windows هو أحد أهدافك، فقد تكون أفضل من العثور على وظيفة مماثلة لنظام إنشاء CMAKE الحالي الخاص بك.

للحصول على التمهيدي الجيد على autotools، إلقاء نظرة هنا:

http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool.

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