Lub sij hawm no peb yuav ntxiv ib lub tsev qiv ntawv muab tso ua ke rau nws, thiab kuj tham txog kev txuas cov modules nrog ib leeg.
Raws li yav dhau los, cov neeg uas tsis siab ntev tuaj yeem tam sim ntawd
mus rau qhov chaw khaws cia tshiab thiab kov txhua yam ntawm koj tus kheej tes.
Txheem
Faib
Thawj qhov uas peb yuav tsum tau ua kom ua tiav peb lub hom phiaj siab tshaj plaws yog faib cov software uas peb txhim kho rau hauv universal, cais cov blocks uas tsis sib xws los ntawm tus neeg siv qhov kev xav.
Nyob rau hauv thawj feem, xws li ib tug qauv thaiv tau piav - ib qhov project nrog ib tug header tsev qiv ntawv. Tam sim no cia peb ntxiv ib lub tsev qiv ntawv tso ua ke rau peb qhov project.
Txhawm rau ua qhov no, cia peb tshem tawm qhov kev ua haujlwm ntawm kev ua haujlwm myfunc
hauv ib qho cais .cpp
-file:
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;
+ }
+}
Tom qab ntawd peb txhais lub tsev qiv ntawv kom muab tso ua ke (myfeature
), uas yuav muaj cov khoom tau txais hauv cov kauj ruam dhau los .cpp
- ntaub ntawv. Lub tsev qiv ntawv tshiab pom tseeb yuav tsum muaj cov headers uas twb muaj lawm, thiab txhawm rau muab qhov no, nws tuaj yeem thiab yuav tsum tau khi rau lub hom phiaj uas twb muaj lawm. mylib
. Ntxiv mus, kev sib txuas ntawm lawv yog pej xeem, uas txhais tau hais tias txhua yam uas lub hom phiaj yuav txuas nrog myfeature
, yuav tau txais cov load thiab lub hom phiaj 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)
+
Tom ntej no, peb yuav xyuas kom meej tias lub tsev qiv ntawv tshiab kuj tau nruab rau ntawm qhov system:
@@ -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)
Nws yuav tsum tau muab sau tseg tias rau lub hom phiaj myfeature
, as rau mylib
ib tug alias nrog ib tug prefix tau tsim Mylib::
. Tib yam yog sau rau ob lub hom phiaj thaum xa tawm lawv rau kev teeb tsa ntawm lub system. Qhov no ua rau nws muaj peev xwm ua haujlwm sib npaug nrog cov hom phiaj rau ib qho twg
Tom qab ntawd, txhua yam uas tseem tshuav yog txhawm rau txuas cov ntawv xeem nrog lub tsev qiv ntawv tshiab (function myfunc
tshem tawm ntawm lub npe, yog li tam sim no koj yuav tsum txuas):
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
)
Cov ntsiab lus (Mylib::mylib
) tam sim no koj tsis tas yuav txuas sib cais, vim hais tias, raws li twb tau hais lawm, lawv tau txuas nrog lub tsev qiv ntawv (Mylib::myfeature
).
Thiab cia peb ntxiv ob peb nuances los xyuas kom meej qhov kev ntsuas kev ntsuas coj mus rau hauv tus account lub tsev qiv ntawv tshiab tuaj txog:
@@ -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
)
Koj tuaj yeem ntxiv ntau cov tsev qiv ntawv, executables, thiab lwm yam. Nws tsis muaj teeb meem li cas raws nraim lawv txuas rau ib leeg hauv qhov project. Qhov tseem ceeb tshaj plaws yog cov hom phiaj twg yog qhov interface ntawm peb cov module, uas yog, lawv lo tawm.
kov yeej
Tam sim no peb muaj cov qauv thaiv cov qauv, thiab peb tuaj yeem ua tus tswj hwm lawv: sau lawv rau hauv cov qauv ntawm txhua qhov nyuaj, txhim kho lawv rau hauv ib qho system lossis txuas lawv ua ke hauv ib qho kev sib dhos.
Installation nyob rau hauv lub system
Ib qho ntawm cov kev xaiv rau kev siv lub module yog rau nruab peb module rau hauv lub system.
cmake --build ΠΏΡΡΡ/ΠΊ/ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ/Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ --target install
Tom qab ntawd, nws txuas nrog rau lwm qhov project siv cov lus txib find_package
find_package(Mylib 1.0 REQUIRED)
Kev sib txuas ua ib qho submodule
Lwm qhov kev xaiv yog txuas cov ntawv tais ceev tseg nrog peb qhov project mus rau lwm qhov project raws li submodule siv cov lus txib add_subdirectory
Siv
Txoj kev khi txoj kev sib txawv, tab sis qhov tshwm sim yog tib yam. Nyob rau hauv ob qho tib si, cov hom phiaj yuav muaj nyob rau hauv peb tes num siv peb module Mylib::myfeature
ΠΈ Mylib::mylib
, uas tuaj yeem siv tau, piv txwv li, zoo li no:
add_executable(some_executable some.cpp sources.cpp)
target_link_libraries(some_executable PRIVATE Mylib::myfeature)
Tshwj xeeb hauv peb cov ntaub ntawv, lub tsev qiv ntawv Mylib::myfeature
yuav tsum tau txuas nrog thaum tsim nyog txuas nrog lub tsev qiv ntawv libmyfeature
. Yog tias muaj cov headers txaus, ces nws tsim nyog siv lub tsev qiv ntawv Mylib::mylib
.
CMake lub hom phiaj tuaj yeem ua kom yuam kev, piv txwv li, npaj tsuas yog xa mus rau qee yam khoom, kev vam khom, thiab lwm yam. Tib lub sijhawm, kev ua haujlwm nrog lawv tshwm sim tib yam.
Qhov ntawd yog qhov peb xav tau.
Tau qhov twg los: www.hab.com