كيفية إضافة ملفات إلى مشروع CDT Eclipse مع CMAKE؟

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

  •  23-08-2019
  •  | 
  •  

سؤال

أواجه مشكلة في الحصول على ملفات المصدر والرأس المضافة إلى مشروع Eclipse CDT الخاص بي مع CMAKE. في مشروع الاختبار الخاص بي (الذي يولد ويبني بشكل جيد) لدي CMAKelists.txt التالية:

cmake_minimum_required(VERSION 2.6)

project(WINCA)

file(GLOB WINCA_SRC_BASE "${WINCA_SOURCE_DIR}/src/*.cpp")
file(GLOB WINCA_SRC_HPP_BASE "${WINCA_SOURCE_DIR}/inc/*.hpp")

add_library(WINCABase ${WINCA_SRC_BASE} ${WINCA_SRC_HPP_BASE})

هذا يعمل بشكل جيد ولكن لا تحتوي ملفات مشروع الكسوف الناتجة على روابط إلى ملفات المصدر أو الرأس. أي شخص يعرف لماذا؟ هل هناك أي أمر cmake آخر يجب أن أستخدمه لإضافة الملفات فعليا إلى المشروع؟

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

المحلول 3

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

نصائح أخرى

أدرك أنه كان بعض الوقت منذ أن قمت بنشر هذا، لكن FWIW، يعمل بالنسبة لي بخير مع إصدارات CMAKE 2.6 أو 2.7 (Trunk)، وتوليد ل Eclipse / Ganymede. ما أقوم به هو أول تشغيل

cmake -G "Eclipse CDT4 - Unix Makefiles" /path/to/src

الذي ينشئ ملفات مشروع الكسوف وكذلك الماكياج، ثم "استيراد مشروع" في الكسوف.

يعمل بشكل جميل ...

خبيث ماكر

أستخدم CMAKE 2.4، وليس 2.6 ولكن في 2.4 تحذر على وجه التحديد من استخدام Globs للعثور على الملفات للبناء.

هذا لأنه ستلاحظ إذا تم إضافة ملفات جديدة أو حذفها، لذلك لن تكون قادرا على معرفة التبعيات.

إذا كان عليك إضافة الملفات بشكل صريح إلى CMAKelists.txt، فسيكون هذا الملف أحدث من الماكياج وملفات ذاكرة التخزين المؤقت. لذلك سوف يعرف cmake تجديدها.

إذا تم إضافة الملفات مع ملفات، فلن يعرف ملفات Cmake عن التغيير مع إضافتك إلى ملفات جديدة، لذا لا يعرف CMAKE أنه يجب عليك تجديد الماكياج وما إلى ذلك. هذا هو نفسه بالنسبة لمشاريع الماكياج والبصرية.

ما لم تقول مستندات Cmake 2.6 صراحة أنه على ما يرام لإضافة ملفات مثل هذا، أود تجنبه. ليس من الصعب إدارة الملفات المصدر في CMAKE. كم مرة تضيف ملفات جديدة؟

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