C++ me CMake - teina ake ake, wahanga II

C++ me CMake - teina ake ake, wahanga II

I te wahanga o mua 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 haere ki te putunga kua whakahoutia ā, pā atu ki ngā mea katoa ki ōu ake ringa.


Tuhinga

  1. Wehewehea
  2. Raupatu

Wehewehea

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 (ētahi atu kōrero mō ngā tikanga whatu).

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. hoahoa hononga.

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.

Raupatu

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.

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 add_subdirectory.

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

Hokona te manaaki pono mo nga waahi me te tiaki DDoS, nga kaiwhakarato VPS VDS 🔥 Hokona he manaaki paetukutuku pono me te tiakitanga DDoS, ngā tūmau VPS VDS | ProHoster