เปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบตเปเบกเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบฅเบงเบเบฅเบงเบกเบเบฑเบเบกเบฑเบ, เปเบฅเบฐเบเบฑเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบกเบเบนเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ.
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบเบนเปเบเบตเปเบญเบปเบเบเบปเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบต
เปเบเบเบตเป repository เบเบฑเบเบเบธเบ เปเบฅเบฐเปเบเบฐเบเบธเบเบขเปเบฒเบเบเปเบงเบเบกเบทเบเบญเบเปเบเบปเปเบฒเปเบญเบ.
เปเบเบทเปเบญเปเบ
เปเบเปเบ
เบชเบดเปเบเบเปเบฒเบญเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบฎเบฑเบเปเบเบทเปเบญเบเบฑเบเบฅเบธเปเบเบปเปเบฒเบซเบกเบฒเบเบญเบฑเบเบชเบนเบเบชเบปเปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเบเบฒเบเปเบเปเบเบเบญเบเปเบงเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเบเบฒเบญเบญเบเปเบเบฑเบเบเบฅเบฑเบญเบเบเบตเปเปเบเบเบเปเบฝเบง, เบเบปเปเบงเปเบเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบเบฒเบเบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบนเปเปเบเป.
เปเบเบชเปเบงเบเบเปเบฒเบญเบดเบ, เบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบเปเบเบทเบเบญเบฐเบเบดเบเบฒเบ - เปเบเบเบเบฒเบเบเบตเปเบกเบตเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบซเบปเบง. เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเปเบเบตเปเบกเบซเปเบญเบเบชเบฐเปเบธเบเบเบตเปเบฅเบงเบเบฅเบงเบกเปเบชเปเปเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบซเปเปเบญเบปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเป 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
- เปเบเบฅเป. เบซเปเบชเบฐเบซเบกเบธเบเปเบซเบกเปเปเบเปเบเบญเบเบเปเบญเบเบเบฒเบ headers เบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง, เปเบฅเบฐเปเบเบทเปเบญเบชเบฐเบซเบเบญเบเบเบฒเบเบเบตเป, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบฅเบฐเบเบงเบเบเบฐเบเบทเบเบเบนเบเบกเบฑเบเบเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง. 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
).
เปเบฅเบฐเปเบซเปเปเบเบตเปเบกเบชเบญเบเบชเบฒเบก nuances เปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบงเบฑเบเปเบเบเบเบฒเบเบเบธเปเบกเบเบญเบเปเบเบเบเปเบฒเบเบถเบเปเบเบดเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเปเบเบปเปเบฒเบกเบฒเปเบซเบกเป:
@@ -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)
เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบฑเบเปเบกเบเบนเบเบเปเบญเบ
เบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเปเบกเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบเปเบเบตเบเบฑเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเบเบเบฒเบเบญเบทเปเบเปเบเบฑเบ submodule เปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ 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