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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•