Ang unang butang nga kinahanglan natong buhaton aron makab-ot ang atong taas nga tumong mao ang pagbahin sa software nga atong gihimo ngadto sa unibersal, hilit nga mga bloke nga managsama gikan sa panglantaw sa user.
Sa una nga bahin, ang ingon nga usa ka sumbanan nga bloke gihulagway - usa ka proyekto nga adunay usa ka librarya sa ulohan. Karon atong idugang ang usa ka hinipos nga librarya sa atong proyekto.
Aron mahimo kini, atong kuhaon ang pagpatuman sa function myfunc sa usa ka bulag .cpp-file:
Dayon among gihubit ang librarya nga i-compile (myfeature), nga maglangkob sa nakuha sa miaging lakang .cpp- file. Ang bag-ong librarya klaro nga nanginahanglan sa mga naa na nga mga ulohan, ug aron mahatagan kini, mahimo kini ug kinahanglan nga ihigot sa naglungtad nga katuyoan. mylib. Dugang pa, ang koneksyon tali kanila mao ang publiko, nga nagpasabut nga ang tanan diin ang target makonektar myfeature, awtomatik nga makadawat sa load ug target mylib (dugang pa bahin sa mga pamaagi sa pag-knitting).
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)
+
Sunod, among sigurohon nga ang bag-ong librarya na-install usab sa sistema:
Kini kinahanglan nga matikdan nga alang sa katuyoan myfeature, ingon sa mylib usa ka alyas nga adunay prefix ang gihimo Mylib::. Ang parehas nga gisulat alang sa parehas nga katuyoan kung gi-eksport kini alang sa pag-install sa sistema. Kini nagpaposible sa pagtrabaho nga parehas sa mga tumong alang sa bisan unsa pagbugkos nga laraw.
Pagkahuman niini, ang nahabilin mao ang pag-link sa mga pagsulay sa yunit sa bag-ong librarya (function myfunc gikuha gikan sa titulo, busa karon kinahanglan nimo nga i-link):
Mga ulohan (Mylib::mylib) karon dili nimo kinahanglan nga magkonektar nga gilain, tungod kay, sama sa nahisgutan na, awtomatiko sila nga konektado kauban ang librarya (Mylib::myfeature).
Ug magdugang kita og pipila ka mga nuances aron maseguro ang mga pagsukod sa coverage nga gikonsiderar ang bag-ong miabut nga librarya:
Mahimo nimong idugang ang daghang mga librarya, mga executable, ug uban pa. Dili igsapayan kung giunsa sila konektado sa usag usa sulod sa proyekto. Ang importante lang mao nga ang mga target mao ang interface sa atong module, nga mao, sila nagpabilin.
Karon aduna na kitay mga standard block modules, ug mahimo natong dominahan sila: i-compose kini ngadto sa usa ka istruktura sa bisan unsa nga pagkakomplikado, pag-instalar niini ngadto sa usa ka sistema o pagsumpay niini sulod sa usa ka sistema sa asembliya.
Pag-instalar sa sistema
Usa sa mga kapilian sa paggamit sa module mao ang pag-instalar sa atong module sa sistema.
Pagkahuman niana, konektado kini sa bisan unsang ubang proyekto gamit ang mando find_package.
find_package(Mylib 1.0 REQUIRED)
Koneksyon isip usa ka submodule
Ang laing kapilian mao ang pagkonektar sa folder sa among proyekto ngadto sa laing proyekto isip submodule gamit ang command add_subdirectory.
Paggamit
Ang mga paagi sa pagbugkos lahi, apan ang resulta parehas. Sa duha ka kaso, ang mga tumong mahimong magamit sa proyekto gamit ang atong module Mylib::myfeature ΠΈ Mylib::mylib, nga mahimong gamiton, pananglitan, sama niini:
Partikular sa among kaso, ang librarya Mylib::myfeature kinahanglan nga konektado kung kinahanglan nga mag-link sa librarya libmyfeature. Kung adunay igo nga mga ulohan, nan kini angay nga gamiton ang librarya Mylib::mylib.
Ang mga target sa CMake mahimong malisud, pananglitan, gituyo lamang sa pagpasa sa pipila ka mga kabtangan, dependency, ug uban pa. Sa samang higayon, ang pagtrabaho uban kanila mahitabo sa samang paagi.