C++, CMake - เดŽเดจเตเดจเต‡เด•เตเด•เตเด‚ เดธเดนเต‹เดฆเดฐเด™เตเด™เตพ, เดญเดพเด—เด‚ II

C++, CMake - เดŽเดจเตเดจเต‡เด•เตเด•เตเด‚ เดธเดนเต‹เดฆเดฐเด™เตเด™เตพ, เดญเดพเด—เด‚ II

เดฎเตเตป เดญเดพเด—เดคเตเดคเต CMake เดฌเดฟเตฝเดกเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดœเดจเดฑเต‡เดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดนเต†เดกเตผ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดŸเต† เด“เตผเด—เดจเตˆเดธเต‡เดทเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดˆ เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดฅ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเดคเต.

เด‡เดคเตเดคเดตเดฃ เดจเดฎเตเดฎเตพ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เดšเต‡เตผเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เดชเดฐเดธเตเดชเดฐเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เดฎเตเดฎเตเดชเดคเตเดคเต†เดชเตเดชเต‹เดฒเต†, เด…เด•เตเดทเดฎเดฐเดพเดฏเดตเตผเด•เตเด•เต เด‰เดŸเดจเดŸเดฟ เด•เดดเดฟเดฏเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดค เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• เดธเตเดตเดจเตเดคเด‚ เด•เตˆเด•เตŠเดฃเตเดŸเต เดŽเดฒเตเดฒเดพเด‚ เดคเตŠเดŸเตเด•.


เด‰เดณเตเดณเดŸเด•เตเด•เด‚

  1. เดตเดฟเดญเดœเดฟเด•เตเด•เตเด•
  2. เด•เต€เดดเดŸเด•เตเด•เตเด•

เดตเดฟเดญเดœเดฟเด•เตเด•เตเด•

เดจเดฎเตเดฎเตเดŸเต† เด‰เดจเตเดจเดคเดฎเดพเดฏ เดฒเด•เตเดทเตเดฏเด‚ เด•เตˆเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดฆเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต, เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เด•เดพเดดเตเดšเดชเตเดชเดพเดŸเดฟเตฝ เดเด•เต€เด•เตƒเดคเดฎเดพเดฏ เดธเดพเตผเดตเดคเตเดฐเดฟเด•เดตเตเด‚ เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดŸเดคเตเดฎเดพเดฏ เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเดพเดฏเดฟ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต.

เด†เดฆเตเดฏ เดญเดพเด—เดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดตเดฐเดฟเดšเตเดšเต - เด’เดฐเต เดนเต†เดกเตผ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดณเตเดณ เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต. เด‡เดจเดฟ เดจเดฎเตเดฎเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เดšเต‡เตผเด•เตเด•เดพเด‚.

เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดซเด‚เด—เตเดทเดจเตเดฑเต† เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ เดชเตเดฑเดคเตเดคเต†เดŸเตเด•เตเด•เตเด‚ myfunc เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเตเดฅเดฒเดคเตเดคเต .cpp-เดซเดฏเตฝ:

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;
+    }
+}

เดชเดฟเดจเตเดจเต† เดจเดฎเตเดฎเตพ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดค เดฒเตˆเดฌเตเดฐเดฑเดฟ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเต (myfeature), เด‡เดคเดฟเตฝ เดฎเตเดฎเตเดชเดคเตเดคเต† เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดฒเดญเดฟเดšเตเดšเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเด‚. .cpp-เดซเดฏเตฝ. เดชเตเดคเดฟเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตเด•เต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เด‡เดคเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป, เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดฒเด•เตเดทเตเดฏเดตเตเดฎเดพเดฏเดฟ เด‡เดคเต เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. mylib. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดต เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฌเดจเตเดงเด‚ เดชเตŠเดคเตเดตเดพเดฏเดคเดพเดฃเต, เด…เดคเดพเดฏเดคเต เดฒเด•เตเดทเตเดฏเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ myfeature, เดฌเต‹เดฃเดธเดพเดฏเดฟ เด’เดฐเต เดฒเด•เตเดทเตเดฏเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดฒเดญเดฟเด•เตเด•เตเด‚ 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)
+

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด‚:

@@ -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)

เดˆ เด‰เดฆเตเดฆเต‡เดถเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต myfeature, เดตเต‡เดฃเตเดŸเดฟ mylib เด’เดฐเต เดชเตเดฐเดฟเดซเดฟเด•เตเดธเตเดณเตเดณ เด’เดฐเต เด“เดฎเดจเดชเตเดชเต‡เดฐเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต Mylib::เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเดพเดฏเดฟ เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดฐเดฃเตเดŸเต เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เตพเด•เตเด•เตเด‚ เด‡เดคเต เดคเดจเตเดจเต†เดฏเดพเดฃเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เด‡เดคเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดฃเด•เตเดทเตป เดกเดฏเด—เตเดฐเด‚.

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเต† เดชเตเดคเดฟเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต (เดซเด‚เด—เตเดทเตป myfunc เดคเดฒเด•เตเด•เต†เดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตโ€Œเดคเต, เด…เดคเดฟเดจเดพเตฝ เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต):

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
 )

เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เตพ (Mylib::mylib) เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เด…เดตเดฏเต† เดตเต†เดตเตเดตเต‡เดฑเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚, เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เด…เดต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเต‹เดŸเตŠเดชเตเดชเด‚ เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (Mylib::myfeature).

เดชเตเดคเตเดคเดพเดฏเดฟ เดตเดจเตเดจ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเดคเตเดคเต เด•เดตเดฑเต‡เดœเต เด…เดณเดตเตเด•เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เดธเต‚เด•เตเดทเตเดฎเดคเด•เตพ เดšเต‡เตผเด•เตเด•เดพเด‚:

@@ -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
     )

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ, เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเดณเตเด•เตพ เดคเตเดŸเด™เตเด™เดฟเดฏเดต เดšเต‡เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดต เดŽเดคเตเดฐเดคเตเดคเต‹เดณเด‚ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฐเดธเตเดชเดฐเด‚ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ. เดจเดฎเตเดฎเตเดŸเต† เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเตเดฑเต† เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดเดคเตŠเด•เตเด•เต† เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เดณเดพเดฃเต เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจเด‚, เด…เดคเดพเดฏเดคเต เด…เดต เดคเตเดฑเดจเตเดจเตเด•เดพเดŸเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เด•เต€เดดเดŸเด•เตเด•เตเด•

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ-เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ เด‰เดฃเตเดŸเต, เดจเดฎเตเด•เตเด•เต เด…เดตเดฏเต† เด†เดงเดฟเดชเดคเตเดฏเด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚: เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†เดฏเต‹ เด’เดฐเตŠเดฑเตเดฑ เด…เดธเด‚เดฌเตเดฒเดฟ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดตเดฏเต† เดชเดฐเดธเตเดชเดฐเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†เดฏเต‹ เดจเดฎเตเด•เตเด•เต เด…เดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดคเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดคเดฏเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เด˜เดŸเดจ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต† เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป

เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฎเตเดฎเตเดŸเต† เดฎเตŠเดกเตเดฏเต‚เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต.

cmake --build ะฟัƒั‚ัŒ/ะบ/ัะฑะพั€ะพั‡ะฝะพะน/ะดะธั€ะตะบั‚ะพั€ะธะธ --target install

เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด‡เดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต find_package.

find_package(Mylib 1.0 REQUIRED)

เด’เดฐเต เดธเดฌเตเดฎเตŠเดกเตเดฏเต‚เดณเดพเดฏเดฟ เด•เดฃเด•เตเดทเตป

เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดทเตป, เดจเดฎเตเดฎเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเดณเตเดณ เดซเต‹เตพเดกเดฑเดฟเดจเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดธเดฌเต เดฎเตŠเดกเตเดฏเต‚เดณเดพเดฏเดฟ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. add_subdirectory.

เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•

เดฒเดฟเด™เตเด•เดฟเด‚เด—เต เดฐเต€เดคเดฟเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เดซเดฒเด‚ เด’เดจเตเดจเตเดคเดจเตเดจเต†เดฏเดพเดฃเต. เดฐเดฃเตเดŸเต เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เดฒเด•เตเดทเตเดฏเด™เตเด™เตพ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚. Mylib::myfeature ะธ Mylib::mylib, เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเตเดชเต‹เดฒเต†:

add_executable(some_executable some.cpp sources.cpp)
target_link_libraries(some_executable PRIVATE Mylib::myfeature)

เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฒเตˆเดฌเตเดฐเดฑเดฟ Mylib::myfeature เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเตเดฎเดพเดฏเดฟ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ เด…เดคเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. libmyfeatureเด†เดตเดถเตเดฏเดคเตเดคเดฟเดจเต เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต. Mylib::mylib.

CMake เดŸเดพเตผเด—เต†เดฑเตเดฑเตเด•เตพ เดคเดจเตเดคเตเดฐเดชเดฐเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดšเดฟเดฒ เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟเด•เตพ, เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดฎเตเดคเดฒเดพเดฏเดต เด•เตˆเดฎเดพเดฑเดพเตป เดฎเดพเดคเตเดฐเด‚ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เด’เดฐเต เดเด•เต€เด•เตƒเดค เดฐเต€เดคเดฟเดฏเดฟเดฒเดพเดฃเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต.

เด…เดคเดพเดฃเต เด•เตˆเดตเดฐเดฟเด•เตเด•เดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเดคเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

DDoS เดชเดฐเดฟเดฐเด•เตเดทเดฏเตเดณเตเดณ เดธเตˆเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เตเด•, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ ๐Ÿ”ฅ DDoS เดชเดฐเดฟเดฐเด•เตเดท, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดณเตเดณ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เต‚ | ProHoster