เช เชตเชเชคเซ เชเชชเชฃเซ เชคเซเชฎเชพเช เชเช เชธเชเชเชฒเชฟเชค เชชเซเชธเซเชคเชเชพเชฒเชฏ เชเชฎเซเชฐเซเชถเซเช, เช เชจเซ เชฎเซเชกเซเชฏเซเชฒเซเชจเซ เชเชเชฌเซเชเชพ เชธเชพเชฅเซ เชฒเชฟเชเช เชเชฐเชตเชพ เชตเชฟเชถเซ เชชเชฃ เชตเชพเชค เชเชฐเซเชถเซเช.
เชชเชนเซเชฒเชพเชจเซ เชเซเชฎ, เชเซเช เช เชงเซเชฐเชพ เชเซ เชคเซเช เชคเชฐเชค เช เชเชฐเซ เชถเชเซ เชเซ
เช เชชเชกเซเช เชเชฐเซเชฒ เชฐเซเชชเซเชเซเชเชฐเซ เชชเชฐ เชเชพเช เช เชจเซ เชคเชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ เชนเชพเชฅเชฅเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเซ.
เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ
เชตเชฟเชญเชพเชเชจ
เช เชฎเชพเชฐเซเช เชเชเซเช เชงเซเชฏเซเชฏ เชนเชพเชเชธเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเชฃเซ เชเซ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชคเซ เช เชเซ เชเซ เชเชชเชฃเซ เชเซ เชธเซเชซเซเชเชตเซเชฐ เชตเชฟเชเชธเชพเชตเซเช เชเซเช เชคเซเชจเซ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช, เช เชฒเช เชฌเซเชฒเซเชเซเชธเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชตเซเช เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเชพ เชฆเซเชทเซเชเชฟเชเซเชฃเชฅเซ เชธเชฎเชพเชจ เชนเซเชฏ.
เชชเซเชฐเชฅเชฎ เชญเชพเชเชฎเชพเช, เชเชตเชพ เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชฌเซเชฒเซเชเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช - เชนเซเชกเชฐ เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชธเชพเชฅเซเชจเซ เชชเซเชฐเซเชเซเชเซเช. เชนเชตเซ เชเชพเชฒเซ เชเชชเชฃเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเช เชธเชเชเชฒเชฟเชค เชชเซเชธเซเชคเชเชพเชฒเชฏ เชเชฎเซเชฐเซเช.
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชพเชฒเซ เชซเชเชเซเชถเชจเชจเซ เช
เชฎเชฒ เชเชฐเซเช 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