Ma ka hapa mua Ua kamaʻilio kēia moʻolelo leʻaleʻa e pili ana i ka hoʻonohonoho ʻana i kahi waihona poʻomanaʻo i loko o ka CMake build system generator.
I kēia manawa e hoʻohui mākou i kahi waihona i hōʻuluʻulu ʻia iā ia, a kamaʻilio pū e pili ana i ka hoʻopili ʻana i nā modules me kekahi.
E like me mamua, hiki koke i ka poe hoomanawanui hele i ka waihona hou a hoopa aku i na mea a pau me kou mau lima iho.
ʻO ka mea mua a mākou e hana ai no ka hoʻokō ʻana i kā mākou pahuhopu kiʻekiʻe, ʻo ia ka hoʻokaʻawale ʻana i ka polokalamu a mākou e hoʻomohala ai i nā poloka ākea āpau i kūlike mai ka manaʻo o ka mea hoʻohana.
Ma ka ʻāpana mua, ua wehewehe ʻia kahi poloka maʻamau - kahi papahana me kahi waihona poʻo. I kēia manawa e hoʻohui i kahi waihona i hui ʻia i kā mākou papahana.
No ka hana ʻana i kēia, e wehe i ka hoʻokō o ka hana myfunc ma kahi kaʻawale .cpp-faila:
A laila wehewehe mākou i ka hale waihona puke e hōʻuluʻulu ʻia (myfeature), e pili ana i ka mea i loaʻa ma ka pae mua .cpp- waihona. Pono ka hale waihona puke hou i nā poʻomanaʻo i loaʻa, a i mea e hoʻolako ai i kēia, hiki a pono e hoʻopili ʻia i ke kumu e kū nei. mylib. Eia kekahi, ʻo ka pilina ma waena o lākou he lehulehu, ʻo ia hoʻi nā mea a pau e pili ai ka pahu hopu myfeature, e loaʻa koke i ka ukana a me ka pahuhopu mylib (ʻoi aku e pili ana i nā ʻano wili).
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)
+
A laila, e hōʻoia mākou ua hoʻokomo ʻia ka waihona hou ma ka ʻōnaehana:
Pono e hoʻomaopopo ʻia no ke kumu myfeature, no ka mea mylib ua hana ʻia kahi inoa inoa me kahi prefix Mylib::. Ua kākau ʻia ka mea like no nā kumu ʻelua i ka wā e lawe aku ai iā lākou no ka hoʻokomo ʻana ma ka ʻōnaehana. Hiki i kēia ke hana like me nā pahuhopu no kēlā me kēia papahana pili.
Ma hope o kēia, ʻo nā mea a pau e hoʻopili ai i nā hoʻokolohua ʻāpana me ka waihona hou (function myfunc lawe ʻia mai ke poʻo inoa, no laila pono ʻoe e loulou):
Nā poʻomanaʻo (Mylib::mylib) i kēia manawa ʻaʻole pono ʻoe e hoʻopili kaʻawale, no ka mea, e like me ka mea i haʻi mua ʻia, pili pū lākou me ka waihona (Mylib::myfeature).
A e hoʻohui i kekahi mau nuances e hōʻoia i nā ana uhi e noʻonoʻo ana i ka hale waihona puke hou i hiki mai:
Hiki iā ʻoe ke hoʻohui i nā hale waihona puke, nā mea hoʻokō, etc. ʻAʻole pili i ka pili pono ʻana o lākou kekahi i kekahi i loko o ka papahana. ʻO ka mea koʻikoʻi wale nō ʻo ia nā pahuhopu i ke kikowaena o kā mākou module, ʻo ia hoʻi, kū lākou i waho.
I kēia manawa, loaʻa iā mākou nā modula poloka maʻamau, a hiki iā mākou ke hoʻomalu iā lākou: e haku iā lākou i kahi ʻano paʻakikī, e hoʻokomo iā lākou i loko o kahi ʻōnaehana a i ʻole e hoʻopili iā lākou i loko o kahi ʻōnaehana hui hoʻokahi.
Hoʻokomo i loko o ka ʻōnaehana
ʻO kekahi o nā koho no ka hoʻohana ʻana i ka module e hoʻokomo i kā mākou module i loko o ka ʻōnaehana.
Ma hope o kēlā, pili ia i kekahi papahana ʻē aʻe e hoʻohana ana i ke kauoha find_package.
find_package(Mylib 1.0 REQUIRED)
Hoʻohui ma ke ʻano he submodule
ʻO kahi koho ʻē aʻe e hoʻopili i ka waihona me kā mākou papahana i kahi papahana ʻē aʻe ma ke ʻano he submodule e hoʻohana ana i ke kauoha add_subdirectory.
E hoʻohana
ʻOkoʻa nā ʻano hana hoʻopaʻa, akā like ka hopena. Ma nā hihia ʻelua, e loaʻa nā pahuhopu i ka papahana me ka hoʻohana ʻana i kā mākou module Mylib::myfeature и Mylib::mylib, hiki ke hoʻohana ʻia, no ka laʻana, e like me kēia:
Ma ko mākou hihia, ʻo ka waihona Mylib::myfeature pono e hoʻopili i ka wā e pono ai ke loulou me ka waihona libmyfeature. Inā lawa nā poʻomanaʻo, pono e hoʻohana i ka waihona Mylib::mylib.
Hiki ke maʻalahi nā pahuhopu CMake, no ka laʻana, i manaʻo ʻia e hoʻouna i kekahi mau waiwai, hilinaʻi, etc. I ka manawa like, hana like ka hana me lākou.