سڀ کان پهرين شيء جيڪا اسان کي ڪرڻ جي ضرورت آهي اسان جي بلند مقصد کي حاصل ڪرڻ لاء سافٽ ويئر جيڪو اسان ترقي ڪريون ٿا ان کي آفاقي، الڳ ٿيل بلاڪن ۾ ورهايو وڃي جيڪي صارف جي نقطي نظر کان يونيفارم آهن.
پهرين حصي ۾، اهڙي معياري بلاڪ بيان ڪيو ويو آهي - هيڊر لائبريري سان هڪ منصوبو. ھاڻي اسان جي پروجيڪٽ ۾ ھڪڙي مرتب ٿيل لائبريري شامل ڪريو.
هن کي ڪرڻ لاء، اچو ته فنڪشن کي لاڳو ڪرڻ لاء myfunc هڪ الڳ ۾ .cpp-فائل:
ان کان پوء اسان لائبريري کي مرتب ڪرڻ جي وضاحت ڪريون ٿا (myfeature)، جنهن تي مشتمل هوندو جيڪو پوئين قدم ۾ حاصل ڪيو ويو هو .cpp-فائل. نئين لائبريري واضح طور تي موجوده هيڊرن جي ضرورت آهي، ۽ انهي کي مهيا ڪرڻ لاء، اهو ٿي سگهي ٿو ۽ موجوده مقصد سان ڳنڍڻ گهرجي mylib. ان کان علاوه، انهن جي وچ ۾ ڪنيڪشن عوامي آهي، جنهن جو مطلب آهي ته هر شيء جنهن کي ٽارگيٽ ڪيو ويندو myfeature، خودڪار طريقي سان لوڊ ۽ ٽارگيٽ حاصل ڪندو mylib (بنائڻ جي طريقن بابت وڌيڪ اصطلاح).
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 108045c..0de77b8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -64,6 +64,17 @@ target_compile_features(mylib INTERFACE cxx_std_17)
add_library(Mylib::mylib ALIAS mylib)
+###################################################################################################
+##
+## Компилируемая библиотека
+##
+###################################################################################################
+
+add_library(myfeature src/mylib/myfeature.cpp)
+target_link_libraries(myfeature PUBLIC mylib)
+
+add_library(Mylib::myfeature ALIAS myfeature)
+
عنوان (Mylib::mylib) هاڻي توهان کي الڳ الڳ ڳنڍڻ جي ضرورت ناهي، ڇاڪاڻ ته، جيئن اڳ ۾ ئي ذڪر ڪيو ويو آهي، اهي خودڪار طور تي لائبريري سان ڳنڍيل آهن (Mylib::myfeature).
۽ اچو ته ڪوريج جي ماپن کي يقيني بڻائڻ لاءِ ڪجهه نونسون شامل ڪريون جيڪي نئين اچڻ واري لائبريري کي مدنظر رکندي:
ان کان پوء، اهو حڪم استعمال ڪندي ڪنهن ٻئي منصوبي سان ڳنڍيل آهي find_package.
find_package(Mylib 1.0 REQUIRED)
ڪنيڪشن هڪ submodule طور
هڪ ٻيو اختيار اهو آهي ته فولڊر کي اسان جي پروجيڪٽ سان ٻئي منصوبي سان ڪمانڊ استعمال ڪندي ذيلي ماڊل طور ڳنڍيو add_subdirectory.
استعمال ڪريو
پابند طريقا مختلف آهن، پر نتيجو ساڳيو آهي. ٻنهي صورتن ۾، مقصد موجود هوندا پروجيڪٽ ۾ اسان جي ماڊل استعمال ڪندي Mylib::myfeature и Mylib::mylib، جنهن کي استعمال ڪري سگهجي ٿو، مثال طور، هن طرح:
خاص طور تي اسان جي صورت ۾، لائبريري Mylib::myfeature جڏهن لائبريري سان ڳنڍڻ ضروري هجي ته ڳنڍڻ جي ضرورت آهي libmyfeature. جيڪڏهن ڪافي هيڊر آهن، پوء اهو لائبريري استعمال ڪرڻ جي قابل آهي Mylib::mylib.
CMake ھدف مشڪل ٿي سگھي ٿو، مثال طور، صرف ڪجھ ملڪيت، انحصار، وغيره کي اڳتي وڌائڻ جو مقصد. ساڳئي وقت، انهن سان گڏ ڪم ساڳئي طريقي سان ٿئي ٿي.