Waxa ugu horreeya ee aan u baahanahay in aan sameyno si aan u gaarno yoolkeena sare waa in aan u qaybinno software-ka aan horumarinayno oo aan u kala qaadno qaybo caalami ah, oo go'doonsan oo lebbisan marka loo eego aragtida isticmaale.
Qaybta hore, sida block caadiga ah ayaa lagu tilmaamay - mashruuc leh maktabad madax. Hadda aan ku darno maktabad la ururiyey mashruucayaga.
Si tan loo sameeyo, aan soo saarno hirgelinta shaqada myfunc si gaar ah .cpp-faylka:
Kadibna waxaan qeexeynaa maktabadda la ururinayo (myfeature), kaas oo ka koobnaan doona wixii lagu helay tallaabadii hore .cpp-faylka. Maktabadda cusub waxay si cad u baahan tahay madax-madaxeedyo jira, si tan loo bixiyona, way ku xidhan tahay ujeedada jirta. mylib. Waxaa intaa dheer, xiriirka ka dhexeeya iyaga waa mid guud, taas oo macnaheedu yahay in wax kasta oo bartilmaameedku uu ku xiran yahay myfeature, waxay si toos ah u heli doontaa culeyska iyo bartilmaameedka mylib (wax badan oo ku saabsan hababka tolida).
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)
+
Marka xigta, waxaan hubin doonaa in maktabadda cusub sidoo kale lagu rakibay nidaamka:
Waa in la ogaadaa in ujeedada myfeature, sida mylib waxaa la sameeyay magacyo leh horgale Mylib::. Isla sidaas oo kale ayaa loo qoraa labada ujeedo marka loo dhoofinayo si loogu rakibo nidaamka. Tani waxay suurtogal ka dhigaysaa in si isku mid ah loogu shaqeeyo yoolal kasta nidaamka xidhitaanka.
Taas ka dib, waxa hadhay waa in lagu xidho imtixaanada cutubka iyo maktabadda cusub (shaqada myfunc laga saaray cinwaanka, markaa hadda waxaad u baahan tahay inaad ku xidho):
Ciwaanada (Mylib::mylib) hadda uma baahnid inaad si gooni ah isku xirto, sababtoo ah, sidii hore loo sheegay, waxay si toos ah ugu xiran yihiin maktabadda (Mylib::myfeature).
Aynu ku darno dhowr siyaalood si aan u hubinno cabbirrada caymiska iyadoo la tixgalinayo maktabadda dhowaan timid:
Waxaad ku dari kartaa maktabado badan, kuwa la fulin karo, iwm. Macno ma laha sida saxda ah ee ay isugu xidhan yihiin mashruuca dhexdiisa. Waxa kaliya ee muhiimka ah waa bartilmaameedyada waa interface-ka modulekayaga, taas oo ah, way soo baxayaan.
Taas ka dib, waxay ku xiran tahay mashruuc kasta oo kale iyadoo la adeegsanayo amarka find_package.
find_package(Mylib 1.0 REQUIRED)
Isku xirka sidii qaab-hoosaad
Ikhtiyaar kale ayaa ah in lagu xidho galka mashruucayaga iyo mashruuc kale sida submodule adoo isticmaalaya amarka add_subdirectory.
Isticmaal
Hababka xidhidu way kala duwan yihiin, laakiin natiijadu waa isku mid. Labada xaaladoodba, yoolalka ayaa laga heli doonaa mashruuca iyadoo la adeegsanayo cutubkayaga Mylib::myfeature ΠΈ Mylib::mylib, oo loo isticmaali karo, tusaale ahaan, sidan:
Gaar ahaan kiiskeena, maktabadda Mylib::myfeature u baahan in lagu xidho marka ay lama huraan tahay in lagu xidho maktabadda libmyfeature. Haddii ay jiraan madax ku filan, markaa waxaa habboon in la isticmaalo maktabadda Mylib::mylib.
Bartilmaameedyada CMake waxay noqon karaan kuwo khiyaano leh, tusaale ahaan, loogu talagalay kaliya in lagu gudbiyo guryaha qaar, ku tiirsanaanta, iwm. Isla mar ahaantaana, la shaqayntooda waxay u dhacdaa si isku mid ah.