سؤال

أنا أبحث عن حل يسمح لي بالبرمجة لنظامي التشغيل Linux وWindows باستخدام C++.

على نظام التشغيل Windows أستخدم Visual Studio (جربت أشياء أخرى على Windows ولكني أعمل مع دايركت اكس وبقدر ما أعرف، هذا هو الحل الأفضل).

على لينكس أستخدمه نتبيانز (الذي أحبه كثيرًا).

مشكلتي هي أنني أريد أن يكون المشروع مستقلاً عن Visual Studio وNetBeans.

لفترة من الوقت اعتقدت ذلك CMake كان الحل هو الحل، ومع ذلك فإن عملية التعلم مهمة للغاية، فأنا أفضل قضاء وقتي في البرمجة بدلاً من تعلم كل الحيل باستخدام CMake.لذلك استقرت Boost.Jam.لقد كان يعمل بشكل جيد على Linux ولكنه كان سيئًا مع Visual Studio.

لقد أنشأت برنامجًا صغيرًا بعنوان Hello World، على نظام التشغيل Windows.لقد قمت بإنشاء مشروع Visual Studio Makefile وأثناء تجميعه وربطه بشكل صحيح.يمكنني تشغيل الملف القابل للتنفيذ ولكن ليس من Visual Studio، الذي لا يمكنه العثور على الملف القابل للتنفيذ (بغض النظر عما أفعله).لا أستطيع تصحيح الأخطاء أيضًا.كما أنني لا أستطيع رؤية رسالة خطأ التجميع عندما أحصل على واحدة.كل ما يمكنني رؤيته من Visual Studio هو أن هناك إجراء makefile قيد التقدم وأن هناك خطأ فيه (على الرغم من إنشاء البرنامج وتشغيله بشكل جيد).

لقد كنت أتصفح وثائق Boost.Jam لفترة من الوقت ولكن دعونا نواجه الأمر، إنها سيئة للغاية (لا عجب أن الكثير من الناس لم يسمعوا عنها) أو أنني غير مناسب تمامًا للوظيفة (يعني غبي هههه ولكن لماذا قليلون جدًا من سمعوا عنها).

لدي ثلاثة أسئلة:

أود أن أعرف ما إذا كان شخص ما قد سمع عن مشروع يستخدم Boost.Jam مع الاستوديو المرئي؟إذا كانت الإجابة بنعم هل يمكنني إلقاء نظرة عليها؟

هل هناك أداة متوفرة مع تكامل Visual Studio الحقيقي؟

كم من الناس يعتقدون أن تعلم استخدام CMake (بشكل صحيح) يكلف الكثير من الوقت؟أي الحيل لتسريع؟

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

المحلول

ويجب أن تأخذ من الوقت لمعرفة CMake ولتسريع عملية التعلم شراء / قراءة "اتقان CMake 4 الطبعة"

إذا كان لديك مشاكل يجب عليك استخدام القائمة البريدية ، وهو نشط (أغسطس 2009 كان ~ 600 الرسائل)

نصائح أخرى

وكيو تي كيو تي والخالق تبدو وكأنها حل جيد للمشكلة. كماكي يمكن إنشاء ملفات vcproj وmakefiles لينكس الأم.

إذا كان لي أن رمز في C ++ لويندوز ولينوكس فما استقاموا لكم فاستقيموا رمز لينكس، وحزمة التطبيق مع الإعداد سيغوين الحد الأدنى.

هل أنت متأكد أنك تبحث في الوثائق الصحيحة؟ لقد قال "Boost.Jam"، لذلك هناك احتمالات عالية كنت تبحث في شيء خطأ. يرجى زيارة Boost.Build الوثائق

وأنا واثق من أن الكثير من الناس بشكل إيجابي تستخدم Boost.Build داخل البصرية ستوديو دون مشاكل. يمكنك محاولة تشغيل البرنامج على سطر الأوامر - ربما هناك بعض رسالة الخطأ التي البصرية ستوديو تقرر عدم تظهر؟

وأود أن أوصى CMake كذلك. إنه أمر مخيف بعض الشيء في البداية ولكن بكم اليسر فيه تدريجيا. انها لا تزال سهلة نوعا ما للمبتدئين لكتابة البرامج النصية عبر منصة، حتى لو أنها ليست جميلة أو الأمثل كخبير ستفعل. جعل التكامل مع CppUnit (للاختبارات وحدة) وهدسون (بناء MGT) من الممكن تكوين إطار التكامل المستمر في أي وقت من الأوقات.

لا أعرف الكثير عن NetBeans، ولكن إذا كنت تريد التطوير لكل من Windows وLinux واستخدام Visual Studio على Windows، إذن CMake هو الخيار العاقل الوحيد, ، حقًا.لقد استخدمته لعدة سنوات حتى الآن، ولا أستطيع أن أبدأ في تخمين مقدار الوقت الذي وفرته لي في صيانة ملفات التكوين وملفات المشروع.

وUpvote لبن. لدينا بائع الكبير الذي قام يندوز ميناء على كود يونيكس القديمة للوصول إلى الأجهزة السلع، وهذا هو بالضبط ما فعلوه.

وإيماكس يعمل بشكل جيد على كل المنابر، وكذلك GNU بها. إذا كنت في حاجة الى واجهة المستخدم الرسومية، فما استقاموا لكم فاستقيموا استخدام GTK + مع مينغو / MSYS بدلا من الدجاجة ومنفذ X.

ولقد رأيت عرض CMake في الملتقى الأوروبي لمطوري البرمجيات الحرة ومفتوحة المصدر قبل بضعة أشهر، وبدا مدهشا. أعتقد أن الوقت الذي يقضيه تعلم أنه قد يكون من المجدي.

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

والشيء الوحيد غير تافهة حول استخدام CMake لعبر تجميع وكتابة المعلومات toolchain: أرقام CMake ما تبقى. انظر http://www.cmake.org/Wiki/CMake_Cross_Compiling#The_toolchain_file للحصول على المزيد المعلومات.

وأنا لا أعرف مدى تعقيد كنت تريد الحصول على، وأنا استخدم مينغو-4.4.2 + cmake على لينكس لتجميع بلدي تطبيقات QT4 للنوافذ، وNSIS على النبيذ لإنشاء ملفات الإعداد. Basicly I اخترق CMakeLists.txt جهدي لاستخدام مينغو عندما أمرر -DWin32 = 1. هنا الجزء relevent عن:

if(WIN32) 
    SET(CMAKE_BUILD_TYPE "Release") #force release for win32, no motive to debug on win32

    SET(CMAKE_CXX_FLAGS_RELEASE  "-march=pentium4 -mtune=pentium4 -mwindows -DNDEBUG -mno-align-stringops -minline-stringops-dynamically -fno-ident -freorder-blocks-and-partition -finline-limit=700 -mfpmath=sse  -ftree-loop-distribution -floop-block -floop-interchange -floop-strip-mine -findirect-inlining -ftree-switch-conversion ${BASE_CXX_FLAGS}")

    SET(WIN32_BASE /home/win32-devel)
    SET(QT_LIB ${WIN32_BASE}/qt-win-opensource-src-4.5.3/lib/)

    SET(CMAKE_CXX_COMPILER i686-pc-mingw32-g++)
    SET(CMAKE_AR i686-pc-mingw32-ar)
    SET(CMAKE_RANLIB  i686-pc-mingw32-ranlib)
    SET(CMAKE_LINKER i686-pc-mingw32-ld)

    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                        COMMAND i686-pc-mingw32-windres
                            -I${CMAKE_CURRENT_SOURCE_DIR}
                            -o${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                            -i${CMAKE_CURRENT_SOURCE_DIR}/icons/win32_icon.rc
                        )

    SET(OPENSSL_LIBRARIES  ${WIN32_BASE}/openssl-0.9.8l/libeay32.dll;${WIN32_BASE}/openssl-0.9.8l/libssl32.dll)
    SET(QT_LIBRARIES  ${QT_LIB}QtCore4.dll;${QT_LIB}/QtGui4.dll)
    SET(CMAKE_EXECUTABLE_SUFFIX ".exe")

    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_LIB}../include ${WIN32_BASE}/openssl-0.9.8l/include)
    message("Building For   : Win32")
else()
    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR})
    message("Building For   : Linux")
endif()
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,--no-undefined -static-libgcc -Wl,-O1 -Wl,--as-needed -Wl,--sort-common -s")

وتحرير: نسيت أن أذكر أن التطور الفعلي وذلك باستخدام كي ديفيلوب 4.

MPC و "ماكيفيلي، المشروع، ومساحة عمل الخالق"، هو أداة أخرى يمكن أن تكون ذات فائدة لك.

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