Ohun akọkọ ti a nilo lati ṣe lati ṣaṣeyọri ibi-afẹde giga wa ni lati pin sọfitiwia ti a dagbasoke si gbogbo agbaye, awọn bulọọki ti o ya sọtọ ti o jẹ aṣọ lati oju wiwo olumulo.
Ni apakan akọkọ, iru bulọọki boṣewa ni a ṣe apejuwe - iṣẹ akanṣe kan pẹlu ile-ikawe akọsori kan. Bayi jẹ ki a ṣafikun ile-ikawe ti o ṣajọ si iṣẹ akanṣe wa.
Lati ṣe eyi, jẹ ki a mu imuse ti iṣẹ naa jade myfunc ni lọtọ .cpp-faili:
Lẹhinna a ṣalaye ile-ikawe lati ṣajọ (myfeature), eyi ti yoo ni ohun ti a gba ni igbesẹ ti tẹlẹ .cpp-faili. O han gbangba pe ile-ikawe tuntun nilo awọn akọle ti o wa tẹlẹ, ati pe lati le pese eyi, o le ati pe o yẹ ki o so mọ idi ti o wa tẹlẹ mylib. Pẹlupẹlu, asopọ laarin wọn jẹ ti gbogbo eniyan, eyi ti o tumọ si pe ohun gbogbo si eyiti afojusun yoo wa ni asopọ myfeature, yoo gba fifuye laifọwọyi ati ibi-afẹde mylib (diẹ ẹ sii nipa awọn ọna wiwun).
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)
+
Nigbamii, a yoo rii daju pe ile-ikawe tuntun tun ti fi sii sori ẹrọ naa:
O yẹ ki o ṣe akiyesi pe fun idi naa myfeature, bi fun mylib a inagijẹ pẹlu ìpele ti a da Mylib::. Kanna ni a kọ fun awọn idi mejeeji nigbati o ba njade wọn jade fun fifi sori ẹrọ lori eto naa. Eyi jẹ ki o ṣee ṣe lati ṣiṣẹ ni iṣọkan pẹlu awọn ibi-afẹde fun eyikeyi eto abuda.
Lẹhin eyi, gbogbo ohun ti o ku ni lati sopọ awọn idanwo ẹyọkan pẹlu ile-ikawe tuntun (iṣẹ myfunc yọ kuro ninu akọle, nitorinaa o nilo lati sopọ):
O le ṣafikun awọn ile-ikawe diẹ sii, awọn iṣẹ ṣiṣe, ati bẹbẹ lọ. Ko ṣe pataki bi wọn ṣe sopọ mọ ara wọn ni deede laarin iṣẹ akanṣe naa. Ohun pataki nikan ni awọn ibi-afẹde ni wiwo ti module wa, iyẹn ni, wọn duro jade.
Bayi a ni boṣewa Àkọsílẹ modulu, ati awọn ti a le jẹ gaba lori wọn: kọ wọn sinu kan be ti eyikeyi complexity, fifi wọn sinu kan eto tabi sisopo wọn papo laarin kan nikan ijọ eto.
Fifi sori ẹrọ sinu eto
Ọkan ninu awọn aṣayan fun lilo module ni lati fi sori ẹrọ module wa sinu eto naa.
Lẹhin iyẹn, o ti sopọ si iṣẹ akanṣe miiran nipa lilo aṣẹ naa find_package.
find_package(Mylib 1.0 REQUIRED)
Asopọ bi submodule
Aṣayan miiran ni lati so folda pọ pẹlu iṣẹ akanṣe wa si iṣẹ akanṣe miiran bi submodule nipa lilo aṣẹ naa add_subdirectory.
Lo
Awọn ọna abuda yatọ, ṣugbọn abajade jẹ kanna. Ni awọn ọran mejeeji, awọn ibi-afẹde yoo wa ninu iṣẹ akanṣe nipa lilo module wa Mylib::myfeature и Mylib::mylib, eyi ti o le ṣee lo, fun apẹẹrẹ, bi eleyi:
Ni pato ninu ọran wa, ile-ikawe naa Mylib::myfeature nilo lati sopọ nigbati o jẹ dandan lati sopọ pẹlu ile-ikawe naa libmyfeature. Ti awọn akọle to ba wa, lẹhinna o tọ lati lo ile-ikawe naa Mylib::mylib.
Awọn ibi-afẹde CMake le jẹ ẹtan, fun apẹẹrẹ, ti pinnu nikan lati firanṣẹ diẹ ninu awọn ohun-ini, awọn igbẹkẹle, ati bẹbẹ lọ. Ni akoko kanna, ṣiṣẹ pẹlu wọn waye ni ọna kanna.