
I kōrerohia i roto i tēnei pūrākau whakangahau te whakaritenga o te whare pukapuka pane i roto i te pūnaha hanga CMake.
I tēnei wā ka tāpirihia e mātou he whare pukapuka kua whakahiatohia ki roto, ā, ka kōrerohia hoki te hononga o ngā kōwae.
Pērā i mua, ka taea tonu e te hunga manawanui te ā, pā atu ki ngā mea katoa ki ōu ake ringa.
Tuhinga
Ko te mea tuatahi me mahi e tātou hei whakatutuki i tā tātou whāinga nui, ko te wehewehe i te pūmanawa e whakawhanakehia ana kia whānui, kia motuhake, kia ōrite hoki mai i te tirohanga a te kaiwhakamahi.
I te wāhanga tuatahi, i whakaahuahia e mātou tētahi poraka kaupapa paerewa—he kaupapa me tētahi whare pukapuka pane. Nā, me tāpiri he whare pukapuka kua whakahiatohia ki tā mātou kaupapa.
Hei mahi i tēnei, ka tangohia e mātou te whakatinanatanga o te mahi myfunc i roto i tētahi motuhake .cpp-kōnae:
diff --git a/include/mylib/myfeature.hpp b/include/mylib/myfeature.hpp
index 43db388..ba62b4f 100644
--- a/include/mylib/myfeature.hpp
+++ b/include/mylib/myfeature.hpp
@@ -46,8 +46,5 @@ namespace mylib
~ see mystruct
*/
- inline bool myfunc (mystruct)
- {
- return true;
- }
+ bool myfunc (mystruct);
}
diff --git a/src/mylib/myfeature.cpp b/src/mylib/myfeature.cpp
new file mode 100644
index 0000000..abb5004
--- /dev/null
+++ b/src/mylib/myfeature.cpp
@@ -0,0 +1,9 @@
+#include <mylib/myfeature.hpp>
+
+namespace mylib
+{
+ bool myfunc (mystruct)
+ {
+ return true;
+ }
+}Kātahi ka tautuhia e mātou te whare pukapuka kua whakahiatohia (myfeature), ka tito mai i ngā mea i whiwhihia i te taahiraa o mua .cpp-kōnae. Me mātua whai pane matua te whare pukapuka hou, ā, kia pai ai tēnei, ka taea, ā, me hono atu ki te ūnga o nāianei. mylib. Heoi anō, he tūmatanui te hononga i waenganui i a rāua, ko te tikanga ko ngā mea katoa e hono atu ai te ūnga myfeature, ka whiwhi aunoa i tētahi ūnga hei putea tāpiri mylib ().
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)
+Muri iho, ka whakarite mātou kua tāutahia te whare pukapuka hou ki roto i te pūnaha:
@@ -72,7 +83,7 @@ add_library(Mylib::mylib ALIAS mylib)
install(DIRECTORY include/mylib DESTINATION include)
-install(TARGETS mylib EXPORT MylibConfig)
+install(TARGETS mylib myfeature EXPORT MylibConfig)
install(EXPORT MylibConfig NAMESPACE Mylib:: DESTINATION share/Mylib/cmake)
include(CMakePackageConfigHelpers)Me mōhio, mō te kaupapa myfeature, mō mylib i hangaia he ingoa huna me te kupu whakataki Mylib::Ka whakaritea te taua mea mō ngā ūnga e rua ina kaweakehia hei tāutanga ki te pūnaha. Mā tēnei ka taea te mahi tonu me ngā ūnga ahakoa te aha. .
Whai muri i tēnei, ko te mea anake e toe ana ko te hono i ngā whakamātautau wae ki te whare pukapuka hou (mahi myfunc kua tangohia mai i te taitara, nō reira me hono atu koe ināianei):
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 5620be4..bc1266c 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -4,7 +4,7 @@ add_executable(mylib-unit-tests test_main.cpp)
target_sources(mylib-unit-tests PRIVATE mylib/myfeature.cpp)
target_link_libraries(mylib-unit-tests
PRIVATE
- Mylib::mylib
+ Mylib::myfeature
doctest::doctest
)Ngā Upoko Kōrero (Mylib::mylib) kāore koe e hiahia ki te hono motuhake i a rātou, nā te mea, e ai ki te kōrero kua whakahuatia ake nei, ka honoa aunoatia rātou me te whare pukapuka (Mylib::myfeature).
Ā, me tāpiri atu ētahi āhuatanga rerekē hei whakarite kia whai whakaaro ngā inenga kapinga ki te whare pukapuka hou kua tae mai:
@@ -15,11 +15,16 @@ if(MYLIB_COVERAGE AND GCOVR_EXECUTABLE)
target_compile_options(mylib-unit-tests PRIVATE --coverage)
target_link_libraries(mylib-unit-tests PRIVATE gcov)
+ target_compile_options(myfeature PRIVATE --coverage)
+ target_link_libraries(myfeature PRIVATE gcov)
+
add_custom_target(coverage
COMMAND
${GCOVR_EXECUTABLE}
- --root=${PROJECT_SOURCE_DIR}/include/
- --object-directory=${CMAKE_CURRENT_BINARY_DIR}
+ --root=${PROJECT_SOURCE_DIR}/
+ --filter=${PROJECT_SOURCE_DIR}/include
+ --filter=${PROJECT_SOURCE_DIR}/src
+ --object-directory=${PROJECT_BINARY_DIR}
DEPENDS
check
)Ka taea e koe te tāpiri atu i ētahi atu whare pukapuka, ngā kōnae whakahaere, me ērā atu mea. Kāore he aha te āhua o te hononga o ēnei mea i roto i te kaupapa. Ko te mea nui ko ēhea ngā ūnga kei roto i te atanga o tā tātou kōwae, arā, kua whakaaturia mai rātou.
Inaianei kei a tātou ngā poraka-kōwae paerewa, ā, ka taea e tātou te whakahaere i a rātou: ka taea e tātou te tito i tētahi hanganga o tētahi uauatanga mai i a rātou, mā te tāuta i a rātou ki roto i te pūnaha, te hono rānei i a rātou ki roto i tētahi pūnaha huihuinga kotahi.
Te tāutanga i roto i te pūnaha
Ko tētahi o ngā kōwhiringa mō te whakamahi i te kōwae ko te tāuta i tā mātou kōwae ki roto i te pūnaha.
cmake --build путь/к/сборочной/директории --target installĀ muri iho, ka honoa ki tētahi atu kaupapa mā te whakamahi i te whakahau .
find_package(Mylib 1.0 REQUIRED)Hononga hei wāhanga iti
Ko tētahi atu kōwhiringa ko te hono i te kōpaki me tā mātou kaupapa ki tētahi atu kaupapa hei wāhanga iti mā te whakamahi i te whakahau .
Whakamahia
He rerekē ngā tikanga hono, engari he rite tonu te hua. I ngā wā e rua, ka wātea ngā whāinga i roto i te kaupapa mā te whakamahi i tā mātou kōwae. Mylib::myfeature и Mylib::mylib, ka taea te whakamahi, hei tauira, pēnei i tēnei:
add_executable(some_executable some.cpp sources.cpp)
target_link_libraries(some_executable PRIVATE Mylib::myfeature)I roto i tā mātou take, ko te whare pukapuka Mylib::myfeature Me hono atu ina hiahiatia kia hono atu ki te whare pukapuka libmyfeatureMena he nui ngā pane, he pai ki te whakamahi i tētahi whare pukapuka. Mylib::mylib.
He uaua pea ngā whāinga CMake, hei tauira, he mea hanga noa hei tuku i ētahi āhuatanga, i ngā whakawhirinakitanga, me ētahi atu. Heoi, ka whakahaerehia katoatia ēnei i roto i te huarahi ōrite.
Koinei te mea i tumanakohia kia tutuki.
Source: will.com
