آموزش CMake - قسمت دوم
پنجشنبه, ۱۹ اسفند ۱۳۹۵، ۰۸:۱۱ ب.ظ
با درود.
در این قسمت با کتابخانه های اشتراکی یا دینامیکی (shared library) آشنا میشوید و یاد میگیرید که چگونه یک پروژه که فقط شامل یک کتابخانه است را با CMake بسازید.
کتابخانه های اشتراکی نوعی کتابخانه هستند که نه در زمان کامپایل بلکه هنگام اجرای برنامه، توسط برنامه فراخوانی میشوند. این یک مزیت بزرگ نسبت به نوع دیگر کتابخانه ها (static) است، چرا که کد آن کتابخانه ها هنگام کامپایل به برنامه شما لینک میشود و نتیجه آن کند بودن مراحل ساخت است.مزیت دیگر: امکان ایجاد تغییرات در کتابخانه های اشتراکی در نسخه های بعدی برنامه ساده تر از کتابخانه های استاتیک است.
یک کتابخانه اشتراکی پس از ساخت فایلی با پسوند so ایجاد میکند، که البته برای اینکه برنامه ای بتواند آنرا فراخوانی کند باید در محل استاندارد (/usr/lib در اکثر توزیع های لینوکسی و سیستم های شبه یونیکس) کپی (نصب) شود.
کتابخانه ساده ما (SimpleMath) وظیفه مهم انجام عملیات چهارگانه ریاضی را بر عهده دارد. پس از دانلود سورس پروژه در انتهای مطلب و استخراج آن به فایل CMakeLists.txt دقت کنید:
cmake_minimum_required(VERSION 3.0.0)همه چیز تقریبا شبیه قسمت قبلی است به جز اینکه:
project (Shared_Library_Test)
set(CMAKE_BUILD_TYPE Release)
include_directories (include)
file(GLOB SOURCES "src/*.cpp")
add_library (simpleMath SHARED ${SOURCES})
install (TARGETS simpleMath DESTINATION /usr/lib)
۱) خط زیر:
set(CMAKE_BUILD_TYPE Release)مشخص میکند که برنامه ساخته شده در وضعیت انتشار (Release) قرار دارد. یعنی ساخت پایانی. بعضی اوقات ما آنرا به دیباگ تغییر میدهیم، هنگامی که برنامه در مرحله تست و عیب یابی قرار دارد.
۲) خط زیر:
add_library (simpleMath SHARED ${SOURCES})میگوید که کتابخانه simpleMath به پروژه اضافه شده که از نوع اشتراکی (SHARED) است و سورس آن در متغیر $SOURCES قرار دارد.
۳) خط آخر، که اختیاری است. در این صورت بعد از اجرای دستور make، میتوانید sudo make install را اجرا کنید تا کتابخانه در محل تعیین شده (usr/lib/) نصب شود.
ساخت
برای ساخت:
cd build
cmake ..
make
sudo make instal #(Optional)