Gure helburu gorena lortzeko egin behar dugun lehenengo gauza garatzen dugun softwarea erabiltzailearen ikuspuntutik uniformeak diren bloke unibertsal eta isolatuetan banatzea da.
Lehen zatian, halako bloke estandar bat deskribatu zen - goiburuko liburutegia duen proiektua. Orain gehi diezaiogun liburutegi konpilatu bat gure proiektuari.
Horretarako, atera dezagun funtzioaren ezarpena myfunc bereizi batean .cpp- fitxategia:
Ondoren, konpilatu beharreko liburutegia definitzen dugu (myfeature), aurreko urratsean lortutakoarekin osatuko dena .cpp-fitxategia. Liburutegi berriak lehendik dauden goiburuak behar ditu, jakina, eta hori eskaintzeko, lehendik dagoen helburuari lotuta egon daiteke eta egon behar du. mylib. Gainera, haien arteko lotura publikoa da, hau da, helburuari lotuta egongo den guztia myfeature, karga eta helburua automatikoki jasoko ditu mylib (puntuzko metodoei buruz gehiago).
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)
+
Ondoren, liburutegi berria sisteman instalatuta dagoela ziurtatuko dugu:
Kontuan izan behar da horretarako myfeature, gisa mylib aurrizkia duen ezizena sortu da Mylib::. Gauza bera idazten da bi helburuetarako sisteman instalatzeko esportatzerakoan. Horri esker, edozeinentzako helburuekin uniformeki lan egitea posible da loteslea eskema.
Horren ostean, unitate-probak liburutegi berriarekin (funtzioa myfunc izenburutik kenduta, beraz, orain estekatu behar duzu):
Izenburuak (Mylib::mylib) orain ez duzu bereiz konektatu behar, lehen esan bezala, liburutegiarekin batera automatikoki konektatzen baitira (Mylib::myfeature).
Eta gehitu ditzagun Γ±abardura pare bat estaldura-neurketak ziurtatzeko, iritsi berria den liburutegia kontuan hartuta:
Liburutegiak, exekutagarriak eta abar gehiago gehi ditzakezu. Ez du axola nola zehazki elkarren artean konektatzen diren proiektuaren barruan. Garrantzitsuena da zein helburu diren gure moduluaren interfazea, hau da, kanpoan geratzen diren.
Orain bloke-modulu estandarrak ditugu, eta menderatu ditzakegu: edozein konplexutasuneko egitura batean konposatu, sistema batean instalatu edo muntaketa-sistema bakar baten barruan lotuz.
Instalazioa sisteman
Modulua erabiltzeko aukeretako bat gure modulua sisteman instalatzea da.
Horren ondoren, beste edozein proiektura konektatzen da komandoa erabiliz find_package.
find_package(Mylib 1.0 REQUIRED)
Konexioa azpimodulu gisa
Beste aukera bat da gure proiektuarekin karpeta beste proiektu batera konektatzea azpimodulu gisa komandoa erabiliz add_subdirectory.
Erabili
Lotura-metodoak desberdinak dira, baina emaitza berdina da. Bi kasuetan, helburuak proiektuan eskuragarri egongo dira gure modulua erabiliz Mylib::myfeature ΠΈ Mylib::mylib, adibidez, honela erabil daiteke:
Zehazki, gure kasuan, liburutegia Mylib::myfeature konektatu behar da liburutegiarekin lotu behar denean libmyfeature. Goiburu nahikoa badago, merezi du liburutegia erabiltzea Mylib::mylib.
CMake helburuak delikatuak izan daitezke, adibidez, propietate, mendekotasun eta abar batzuk birbidaltzeko soilik helburu. Aldi berean, beraiekin lan egitea modu berean gertatzen da.