Anns a' chuid roimhe Bha an sgeulachd inntinneach seo a’ bruidhinn air leabharlann cinn a chuir air dòigh taobh a-staigh gineadair siostam togail CMake.
An turas seo cuiridh sinn leabharlann cruinn ris, agus bruidhnidh sinn cuideachd mu bhith a’ ceangal mhodalan ri chèile.
Mar roimhe, faodaidh an fheadhainn a tha mì-fhoighidneach sa bhad Rach don stòr ùraichte agus suathadh a h-uile càil le do làmhan fhèin.
Is e a’ chiad rud a dh’ fheumas sinn a dhèanamh gus ar n-amas àrd a choileanadh a bhith a’ roinn am bathar-bog a leasaicheas sinn gu bhith na bhlocaichean uile-choitcheann, iomallach a tha èideadh bho shealladh an neach-cleachdaidh.
Anns a 'chiad phàirt, chaidh a leithid de bhloc àbhaisteach a mhìneachadh - pròiseact le leabharlann cinn. A-nis leig dhuinn leabharlann cruinnichte a chuir ris a’ phròiseact againn.
Gus seo a dhèanamh, leig dhuinn a-mach buileachadh a 'ghnìomh myfunc ann an leith .cpp-faidhle:
An uairsin bidh sinn a’ mìneachadh an leabharlann a thèid a chur ri chèile (myfeature), a bhios air a dhèanamh suas de na chaidh fhaighinn sa cheum roimhe .cpp-faidhle. Tha e soilleir gu bheil feum aig an leabharlann ùr air cinn-cinn a th’ ann mar-thà, agus gus seo a thoirt seachad, faodaidh agus bu chòir a bhith ceangailte ris an adhbhar a th’ ann. mylib. A bharrachd air an sin, tha an ceangal eatorra poblach, a tha a 'ciallachadh gum bi a h-uile càil ris a bheil an targaid ceangailte myfeature, gheibh e gu fèin-ghluasadach an luchd agus an targaid mylib (tuilleadh mu dhòighean fighe).
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)
+
An ath rud, nì sinn cinnteach gu bheil an leabharlann ùr air a chuir a-steach air an t-siostam cuideachd:
Bu chòir a thoirt fa-near gur ann airson an adhbhar myfeature, mar airson mylib chaidh alias le ro-leasachan a chruthachadh Mylib::. Tha an aon rud air a sgrìobhadh airson an dà adhbhar nuair a thèid an às-mhalairt airson an stàladh air an t-siostam. Tha seo ga dhèanamh comasach obrachadh gu co-ionnan le amasan airson neach sam bith sgeama ceangail.
Às deidh seo, chan eil air fhàgail ach deuchainnean aonad a cheangal ris an leabharlann ùr (gnìomh myfunc air a thoirt a-mach às an tiotal, mar sin a-nis feumaidh tu ceangal):
Cinn (Mylib::mylib) a-nis chan fheum thu ceangal a dhèanamh air leth, oir, mar a chaidh ainmeachadh roimhe, tha iad ceangailte gu fèin-ghluasadach còmhla ris an leabharlann (Mylib::myfeature).
Agus cuiridh sinn nuance no dhà ris gus dèanamh cinnteach à tomhas còmhdaich a’ toirt aire don leabharlann a tha air ùr thighinn:
Faodaidh tu barrachd leabharlannan, executables, msaa a chur ris. Chan eil e gu diofar dè dìreach a tha iad ceangailte ri chèile taobh a-staigh a’ phròiseict. Is e an aon rud cudromach dè na targaidean a tha mar eadar-aghaidh ar modal, is e sin, bidh iad a’ cumail a-mach.
A-nis tha modalan bloc àbhaisteach againn, agus is urrainn dhuinn smachd a chumail orra: an cur ri chèile ann an structar iom-fhillteachd sam bith, gan stàladh ann an siostam no gan ceangal ri chèile taobh a-staigh aon shiostam cruinneachaidh.
Stàladh a-steach don t-siostam
Is e aon de na roghainnean airson am modal a chleachdadh am modal againn a chuir a-steach don t-siostam.
Às deidh sin, tha e ceangailte ri pròiseact sam bith eile a ’cleachdadh an àithne find_package.
find_package(Mylib 1.0 REQUIRED)
Ceangal mar fo-mhodal
Is e roghainn eile am pasgan leis a’ phròiseact againn a cheangal ri pròiseact eile mar fho-mhodal a’ cleachdadh an àithne add_subdirectory.
Cleachd
Tha na dòighean ceangail eadar-dhealaichte, ach tha an toradh mar an ceudna. Anns gach suidheachadh, bidh amasan rim faighinn sa phròiseact a’ cleachdadh ar modal Mylib::myfeature и Mylib::mylib, a dh'fhaodar a chleachdadh, mar eisimpleir, mar seo:
Gu sònraichte anns a 'chùis againn, an leabharlann Mylib::myfeature feumar ceangal a dhèanamh nuair a tha feum air ceangal ris an leabharlann libmyfeature. Ma tha cinn gu leòr ann, is fhiach an leabharlann a chleachdadh Mylib::mylib.
Faodaidh targaidean CMake a bhith duilich, mar eisimpleir, an dùil dìreach cuid de thogalaichean, eisimeileachd, msaa a chuir air adhart. Aig an aon àm, ag obair còmhla riutha a 'tachairt san aon dòigh.