Cmake, make و پوشه build در کتابخونه های cpp

سلام - ی مدته که برای ی پروژه از cpp استفاده میکنم
میخوام از کتابخونه های open source اش استفاده کنم مثلا کتابخونه های gui

ولی واقعا گیج شدم - آموزش درست و حسابی پیدا نکردم
میان با cmake ی سری فایل رو کامپایل میکنن؟ بعد ی لیست توی ی فایل به نام cmakeList.txt اضافه میشه و بعد با make میان فایل رو میسازن؟
بعد فایل های اون کتابخونه رو باید کجا اضافه کنم؟ همینطوری انداختم توی پوشه include توی فایل های کامپایلر

واقعا هدفشون رو نمیفهمم
کسی میتونه راهنماییم کنه؟

اگر میشه عنوان رو یه مقدار بهبود ببخش.

در مورد cmake هم باید بگم که خودش مستقیم build نمی کنه پروژه رو و بر اساس تنظیماتی که می دی بهش میاد بر اساس یه buildsystem دیگه برات می سازه مثلا با GNU Make یا ninja.

در مورد اینکه کتابخونه ها و اینا از کجا میان. این ربطی به cmake نداره و کامپایلر و لینکر هستند که اینا رو مدیریت می کن. حالا کجاش برات گنگ هست که جدا توضیح بدم ؟

1 Likes

راستش هر کدی رو میخوام کامپایل کنم با هزار تا ارور مواجه میشم.که همه شون undefined reference to هستن

نمیدونم این کتابخونه ها چرا ی پوشه build دارن - مگه همون دستور

g++ code.cpp

نمیاد کل فایل هارو کامپایل کنه؟

شما فرض کنید ی شخصی رو که python کار میکرده الان ی دفعه ای اومده توی cpp و واقعا نمیدونه چی به چیه

1 Likes

:joy: :joy: :joy: تسلیت می گم

نه . حتی نزدیک هم نیست. کلی داستان داره که باید در موردش بخونی. ولی خیلی پیشنهاد می کنم که cmake استفاده کنی. برای مثال این cmake پروژه ای هست که الان روش کار می کنم و پروژه ی ساده ای هم هست:

و این فقط CMakeLists اصلی هست تو بعضی دایرکتوری ها تنظیمات بیشتری رو خواهی دید

2 Likes

@hamidb14 جان همچین تیتری از شما دیگه بعیده :zipper_mouth_face::smiley:
به فکری به حالش بکن لطفا

2 Likes

من یه زمان برای gui از qt استفاده میکردم بد نبود میشه تحملش کرد

1 Likes

واقعا نمیدونم چرا این مشکلات پیش میاد:expressionless:

من که از روی خود Tutorial پیش میرم

احتمالا header فایل مربوط بهش رو include نکردی

دنبال مشکل گشتم فهمیدم مشکل از کتابخونس. ورژن های جدیدش این مشلکو پیدا کرده
مچبور شدم ورژن 3 سال پیش رو نصب کنم

چیز جالب در مورد برنامه نویسی اینه که ما از چیزایی استفاده میکنیم که بهش مطمِین نیستیم و ممکنه تو استفاده ازش باگ پیدا کنیم

تو کلوژر همچین مشکلی نداشتم و اینطور که توی stackoverflow و جاهای دیگه میبینم، دیگران هم همین نظرو دارن.

ولی مثلا توی پایتون، یه پروژه زدم ۵سال پیش، همه‌چیز عالی کار میکرد؛ حالا لایبرری Pillow تصمیم گرفت موقع resize کردن، آپشن anti-aliasing رو به صورت پیشفرض فعال کنه.
کل پروژه خراب شد و چندروز بدبختی کشیدم تا بفهمم مشکل کجاست و فیکسش کنم. این درحالیه که بیشتر از ۳ساله از اون شرکت و اون پروژه فرار کردم :neutral_face:
سازندگان لایبرریها باید یه کم درک بیشتر و تغییرات انتحاری کمتری نشون بدن :neutral_face:

البته از وقتی خود پایتون، از ۲ به ۳ اینقدر تغییر داشته، انتظار بیشتری از لایبرریهاش نمیره.


پ.ن:
تغییرات انتحاری: تغییراتی در لایبرریهای زیرساختی که باعث انفجار خودشون و پروژه‌ی ما میشه. [همچنین، مراجعه کنید به: Backward compatibility]
(برم اینو بفرستم واسه دهخدا، تو نسخه‌ی بعدی لغت‌نامش چاپ کنه :crazy_face:)

2 Likes