Deartháireacha go deo iad CMake agus C++

Deartháireacha go deo iad CMake agus C++

Le linn na forbartha, is maith liom tiomsaitheoirí a athrú, modhanna a thógáil, leaganacha spleáchais, anailís statach a dhéanamh, feidhmíocht a thomhas, clúdach a bhailiú, doiciméadú a ghiniúint, etc. Agus is breá liom CMake go mór mar ligeann sé dom gach rud a theastaíonn uaim a dhéanamh.

Tá go leor daoine ag cáineadh CMake, agus is minic a bhíonn sé tuillte acu, ach má fhéachann tú air, níl gach rud chomh dona, agus le déanaí ní dona ar chor ar bith, agus tá treo na forbartha dearfach go leor.

Sa nóta seo, ba mhaith liom a insint duit conas leabharlann ceanntásca a eagrú i C ++ sa chóras CMake chun an fheidhmiúlacht seo a leanas a fháil:

  1. Tionól;
  2. tástálacha Autorun;
  3. Tomhas clúdach cód;
  4. Suiteáil;
  5. Doiciméadúchán uathoibríoch;
  6. Giniúint bosca gainimh ar líne;
  7. Anailís statach.

Is féidir le duine ar bith a thuigeann cheana féin na buntáistí agus C-dhéanamh go simplí Íosluchtaigh múnla tionscadal teachín agus tús a úsáid.


Ábhar

  1. Tionscadal ón taobh istigh
    1. Struchtúr an tionscadail
    2. Príomhchomhad CMake (./CMakeLists.txt)
      1. Faisnéis tionscadail
      2. Roghanna Tionscadail
      3. Roghanna tiomsú
      4. An sprioc is mó
      5. Suiteáil
      6. Tástálacha
      7. Doiciméadú
      8. Bosca gainimh ar líne
    3. Script tástála (test/CMakeLists.txt)
      1. Tástáil
      2. Clúdach
    4. Script le haghaidh doiciméadú (doc/CMakeLists.txt)
    5. Script le haghaidh bosca gainimh ar líne (ar líne/CMakeLists.txt)
  2. Tionscadal lasmuigh
    1. Tionól
      1. Giniúint
      2. Tionól
    2. Roghanna
      1. MYLIB_COVERAGE
      2. MYLIB_TESTING
      3. MYLIB_DOXYGEN_LANGUAGE
    3. Spriocanna an Tionóil
      1. De réir réamhshocraithe
      2. mylib-aonad-tástálacha
      3. seiceáil
      4. clúdach
      5. duga
      6. bosca slaite
    4. Примеры
  3. Uirlisí
  4. Anailís statach
  5. Afterword

Tionscadal ón taobh istigh

Struchtúr an tionscadail

.
├── CMakeLists.txt
├── README.en.md
├── README.md
├── doc
│   ├── CMakeLists.txt
│   └── Doxyfile.in
├── include
│   └── mylib
│       └── myfeature.hpp
├── online
│   ├── CMakeLists.txt
│   ├── mylib-example.cpp
│   └── wandbox.py
└── test
    ├── CMakeLists.txt
    ├── mylib
    │   └── myfeature.cpp
    └── test_main.cpp

Déanfaimid labhairt go príomha faoi conas scripteanna CMake a eagrú, mar sin déanfar iad a phlé go mion. Is féidir le duine ar bith an chuid eile de na comhaid a fheiceáil go díreach ar an leathanach teimpléad tionscadail.

Príomhchomhad CMake (./CMakeLists.txt)

Faisnéis tionscadail

Ar an gcéad dul síos, ní mór duit an leagan riachtanach den chóras CMake a iarraidh. Tá CMake ag athrú, tá sínithe orduithe agus iompar i gcoinníollacha éagsúla ag athrú. Chun go dtuigfidh CMake láithreach cad ba mhaith linn uaidh, ní mór dúinn ár gceanglais maidir leis a thaifeadadh láithreach.

cmake_minimum_required(VERSION 3.13)

Ansin ainmneoimid ár dtionscadal, a ainm, a leagan, na teangacha a úsáidtear, etc. (féach. команду project).

Sa chás seo cuirimid in iúl an teanga CXX (agus ciallaíonn sé seo C++) ionas nach ndéanann CMake brú agus cuardach a dhéanamh ar tiomsaitheoir teanga C (de réir réamhshocraithe, folaíonn CMake dhá theanga: C agus C++).

project(Mylib VERSION 1.0 LANGUAGES CXX)

Anseo, is féidir leat a sheiceáil láithreach an bhfuil ár dtionscadal san áireamh i dtionscadal eile mar fho-thionscadal. Cabhróidh sé seo go leor sa todhchaí.

get_directory_property(IS_SUBPROJECT PARENT_DIRECTORY)

Roghanna Tionscadail

Cuirfimid dhá rogha ar fáil.

Is é an chéad rogha MYLIB_TESTING — tástálacha aonaid a dhíchumasú. D'fhéadfadh sé seo a bheith riachtanach má táimid cinnte go bhfuil gach rud in ord leis na tástálacha, ach ba mhaith linn ach, mar shampla, ár dtionscadal a shuiteáil nó a phacáistiú. Nó tá ár dtionscadal san áireamh mar fhothionscadal - sa chás seo, níl suim ag úsáideoir ár dtionscadal ár dtástálacha a reáchtáil. Ní dhéanann tú tástáil ar na spleáchais a úsáideann tú, an ndéanann tú?

option(MYLIB_TESTING "Включить модульное тестирование" ON)

Ina theannta sin, déanfaimid rogha ar leithligh MYLIB_COVERAGE chun cumhdach cód a thomhas trí thástálacha, ach beidh gá le huirlisí breise, mar sin beidh gá é a chumasú go sainráite.

option(MYLIB_COVERAGE "Включить измерение покрытия кода тестами" OFF)

Roghanna tiomsú

Ar ndóigh, is ríomhchláraitheoirí móide fionnuar muid, agus mar sin ba mhaith linn an leibhéal uasta diagnóisic ama tiomsaithe ón tiomsaitheoir. Ní sleamhnóidh luch amháin tríd.

add_compile_options(
    -Werror

    -Wall
    -Wextra
    -Wpedantic

    -Wcast-align
    -Wcast-qual
    -Wconversion
    -Wctor-dtor-privacy
    -Wenum-compare
    -Wfloat-equal
    -Wnon-virtual-dtor
    -Wold-style-cast
    -Woverloaded-virtual
    -Wredundant-decls
    -Wsign-conversion
    -Wsign-promo
)

Déanfaimid síntí a dhíchumasú freisin chun an caighdeán teanga C++ a chomhlíonadh go hiomlán. Tá siad cumasaithe de réir réamhshocraithe i CMake.

if(NOT CMAKE_CXX_EXTENSIONS)
    set(CMAKE_CXX_EXTENSIONS OFF)
endif()

An sprioc is mó

Níl sa leabharlann seo ach comhaid cheanntásc, rud a chiallaíonn nach bhfuil aon sceite againn i bhfoirm leabharlanna statacha nó dinimiciúla. Ar an láimh eile, chun ár leabharlann a úsáid go seachtrach, ní mór í a shuiteáil, ní mór é a bheith inbhraite sa chóras agus ceangailte le do thionscadal, agus ag an am céanna na ceannteidil chéanna seo, chomh maith le roinnt cinn breise b'fhéidir, ag gabháil leis airíonna.

Chun na críche sin, cruthaímid leabharlann comhéadan.

add_library(mylib INTERFACE)

Ceanglaíonn muid ceanntásca lenár leabharlann comhéadain.

Tugann úsáid nua-aimseartha, faiseanta, óige CMake le tuiscint go bhfuil ceanntásca, airíonna, etc. a tharchur trí aon sprioc amháin. Mar sin is leor é a rá target_link_libraries(target PRIVATE dependency), agus gach ceanntásc a bhaineann leis an sprioc dependency, ar fáil d'fhoinsí a bhaineann leis an sprioc target. Agus ní gá duit aon [target_]include_directories. Léireofar é seo thíos san anailís Script CMake le haghaidh tástálacha aonaid.

Is fiú aird a thabhairt freisin ar an mar a thugtar air. выражения-генераторы: $<...>.

Comhcheanglaíonn an t-ordú seo na ceanntásca a theastaíonn uainn lenár leabharlann comhéadain, agus má tá ár leabharlann ceangailte le haon sprioc laistigh den ordlathas CMake céanna, beidh na ceanntásca ón eolaire comhcheangailte leis ${CMAKE_CURRENT_SOURCE_DIR}/include, agus má tá ár leabharlann suiteáilte ar an gcóras agus ceangailte le tionscadal eile ag baint úsáide as an ordú find_package, ansin beidh ceanntásca ón eolaire bainteach leis include i gcoibhneas leis an eolaire suiteála.

target_include_directories(mylib INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:include>
)

Déanaimis caighdeán teanga a shocrú. Ar ndóigh, an ceann deireanach. Ag an am céanna, ní hamháin go gcuirfimid an caighdeán san áireamh, ach leathaimid freisin é dóibh siúd a úsáidfidh ár leabharlann. Baintear é seo amach mar gheall ar an bhfíric go bhfuil catagóir ag an maoin socraithe INTERFACE (Féach ordú target_compile_features).

target_compile_features(mylib INTERFACE cxx_std_17)

Cruthaímid ailias dár leabharlann. Ina theannta sin, ar mhaithe le háilleacht, beidh sé i “spás ainm” speisialta. Beidh sé seo úsáideach nuair a bhíonn modúil éagsúla le feiceáil inár leabharlann, agus téann muid chun iad a nascadh go neamhspleách ar a chéile. Cosúil i Busta, mar shampla.

add_library(Mylib::mylib ALIAS mylib)

Suiteáil

Ár gceanntásca a shuiteáil isteach sa chóras. Tá gach rud simplí anseo. Deirimid gur chóir an fillteán leis na ceanntásca go léir dul isteach san eolaire include i gcoibhneas leis an suíomh suiteála.

install(DIRECTORY include/mylib DESTINATION include)

Ansin, cuirimid in iúl don chóras tógála gur mhaith linn a bheith in ann an t-ordú a ghlaoch i dtionscadail tríú páirtí find_package(Mylib) agus sprioc a fháil Mylib::mylib.

install(TARGETS mylib EXPORT MylibConfig)
install(EXPORT MylibConfig NAMESPACE Mylib:: DESTINATION share/Mylib/cmake)

Ba cheart an chéad litriú eile a thuiscint mar seo. Nuair atá i dtionscadal tríú páirtí tugaimid an t-ordú find_package(Mylib 1.2.3 REQUIRED), agus beidh an leagan fíor den leabharlann suiteáilte ar neamhréir leis an leagan 1.2.3Ginfidh CMake earráid go huathoibríoch. Is é sin, ní bheidh ort a rianú leaganacha de láimh.

include(CMakePackageConfigHelpers)
write_basic_package_version_file("${PROJECT_BINARY_DIR}/MylibConfigVersion.cmake"
    VERSION
        ${PROJECT_VERSION}
    COMPATIBILITY
        AnyNewerVersion
)
install(FILES "${PROJECT_BINARY_DIR}/MylibConfigVersion.cmake" DESTINATION share/Mylib/cmake)

Tástálacha

Má tá tástálacha díchumasaithe go sainráite ag baint úsáide as rogha chomhfhreagrach nó is fothionscadal é ár dtionscadal, is é sin, tá sé ceangailte le tionscadal CMake eile ag baint úsáide as an ordú add_subdirectory, ní bhogaimid níos faide ar feadh an ordlathais, agus ní ritheann an script, a chuireann síos ar na horduithe le haghaidh tástálacha a ghiniúint agus a rith.

if(NOT MYLIB_TESTING)
    message(STATUS "Тестирование проекта Mylib выключено")
elseif(IS_SUBPROJECT)
    message(STATUS "Mylib не тестируется в режиме подмодуля")
else()
    add_subdirectory(test)
endif()

Doiciméadú

Ní ghinfear doiciméadú ach oiread i gcás fothionscadail.

if(NOT IS_SUBPROJECT)
    add_subdirectory(doc)
endif()

Bosca gainimh ar líne

Mar an gcéanna, ní bheidh bosca gainimh ar líne ag an bhfothionscadal ach an oiread.

if(NOT IS_SUBPROJECT)
    add_subdirectory(online)
endif()

Script tástála (test/CMakeLists.txt)

Tástáil

Ar an gcéad dul síos, aimsímid pacáiste leis an gcreat tástála riachtanach (cuir an ceann is fearr leat in ionad).

find_package(doctest 2.3.3 REQUIRED)

Cruthaímid ár gcomhad inrite le tástálacha. De ghnáth ní chuirim go díreach leis an dénártha inrite ach an comhad a mbeidh an fheidhm ann main.

add_executable(mylib-unit-tests test_main.cpp)

Agus cuirim comhaid isteach ina ndéantar cur síos ar na tástálacha féin níos déanaí. Ach ní gá duit é sin a dhéanamh.

target_sources(mylib-unit-tests PRIVATE mylib/myfeature.cpp)

Ceanglaíonn muid spleáchais. Tabhair faoi deara le do thoil nach ndearnamar ach na spriocanna CMake a theastaigh uainn a nascadh lenár ndénártha agus nár ghlaoigh muid an t-ordú target_include_directories. Ceannteidil ón gcreat tástála agus ónár gceann Mylib::mylib, chomh maith le paraiméadair a thógáil (inár gcás, is é seo an caighdeán teanga C ++) a tháinig tríd chomh maith leis na spriocanna seo.

target_link_libraries(mylib-unit-tests
    PRIVATE
        Mylib::mylib
        doctest::doctest
)

Mar fhocal scoir, cruthaímid sprioc chaochadán, a bhfuil a “thógáil” comhionann le tástálacha a rith, agus cuirimid an sprioc seo leis an leagan réamhshocraithe (tá an aitreabúid freagrach as seo ALL). Ciallaíonn sé seo go spreagann an tógáil réamhshocraithe na tástálacha a rith, rud a chiallaíonn nach ndéanfaimid dearmad choíche iad a rith.

add_custom_target(check ALL COMMAND mylib-unit-tests)

Clúdach

Ansin, cuirimid ar chumas tomhas clúdach cód má shonraítear an rogha chuí. Ní dhéanfaidh mé sonraí, toisc go mbaineann siad níos mó le huirlis chun clúdach a thomhas ná le CMake. Níl sé tábhachtach ach a thabhairt faoi deara go gcruthófar sprioc bunaithe ar na torthaí coverage, a bhfuil sé áisiúil clúdach a thomhas a thosú.

find_program(GCOVR_EXECUTABLE gcovr)
if(MYLIB_COVERAGE AND GCOVR_EXECUTABLE)
    message(STATUS "Измерение покрытия кода тестами включено")

    target_compile_options(mylib-unit-tests PRIVATE --coverage)
    target_link_libraries(mylib-unit-tests PRIVATE gcov)

    add_custom_target(coverage
        COMMAND
            ${GCOVR_EXECUTABLE}
                --root=${PROJECT_SOURCE_DIR}/include/
                --object-directory=${CMAKE_CURRENT_BINARY_DIR}
        DEPENDS
            check
    )
elseif(MYLIB_COVERAGE AND NOT GCOVR_EXECUTABLE)
    set(MYLIB_COVERAGE OFF)
    message(WARNING "Для замеров покрытия кода тестами требуется программа gcovr")
endif()

Script le haghaidh doiciméadú (doc/CMakeLists.txt)

Aimsíodh Doxygen.

find_package(Doxygen)

Ansin, déanaimid seiceáil an bhfuil an athróg teanga socraithe ag an úsáideoir. Má tá, ansin ní dhéanaimid teagmháil leis, mura bhfuil, glacaimid Rúisis. Ansin déanaimid comhaid an chórais Doxygen a chumrú. Téann na hathróga riachtanacha go léir, lena n-áirítear an teanga, ann le linn an phróisis chumraíochta (féach. команду configure_file).

Ansin cruthaímid sprioc doc, a chuirfidh tús le doiciméid a ghiniúint. Ós rud é nach é giniúint doiciméadaithe an riachtanas is mó sa phróiseas forbartha, ní bheidh an sprioc cumasaithe de réir réamhshocraithe;

if (Doxygen_FOUND)
    if (NOT MYLIB_DOXYGEN_LANGUAGE)
        set(MYLIB_DOXYGEN_LANGUAGE Russian)
    endif()
    message(STATUS "Doxygen documentation will be generated in ${MYLIB_DOXYGEN_LANGUAGE}")
    configure_file(Doxyfile.in Doxyfile)
    add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
endif ()

Script le haghaidh bosca gainimh ar líne (ar líne/CMakeLists.txt)

Anseo aimsímid an tríú Python agus cruthaítear sprioc wandbox, a ghineann iarratas a fhreagraíonn don API seirbhíse Bosca Wand, agus cuireann sé uaidh é. Tagann an freagra le nasc chuig an bosca gainimh críochnaithe.

find_program(PYTHON3_EXECUTABLE python3)
if(PYTHON3_EXECUTABLE)
    set(WANDBOX_URL "https://wandbox.org/api/compile.json")

    add_custom_target(wandbox
        COMMAND
            ${PYTHON3_EXECUTABLE} wandbox.py mylib-example.cpp "${PROJECT_SOURCE_DIR}" include |
            curl -H "Content-type: application/json" -d @- ${WANDBOX_URL}
        WORKING_DIRECTORY
            ${CMAKE_CURRENT_SOURCE_DIR}
        DEPENDS
            mylib-unit-tests
    )
else()
    message(WARNING "Для создания онлайн-песочницы требуется интерпретатор ЯП python 3-й версии")
endif()

Tionscadal lasmuigh

Anois, déanaimis féachaint ar conas é seo go léir a úsáid.

Tionól

Tá dhá chéim i dtógáil an tionscadail seo, cosúil le haon tionscadal eile ar chóras tógála CMake:

Giniúint

cmake -S путь/к/исходникам -B путь/к/сборочной/директории [опции ...]

Murar oibrigh an t-ordú thuas mar gheall ar sheanleagan de CMake, déan iarracht é a fhágáil ar lár -S:

cmake путь/к/исходникам -B путь/к/сборочной/директории [опции ...]

Tuilleadh faoi roghanna.

Tógáil an tionscadail

cmake --build путь/к/сборочной/директории [--target target]

Tuilleadh faoi spriocanna tionóil.

Roghanna

MYLIB_COVERAGE

cmake -S ... -B ... -DMYLIB_COVERAGE=ON [прочие опции ...]

Áirítear sprioc coverage, leis ar féidir leat tosú ag tomhas clúdach cód le tástálacha.

MYLIB_TESTING

cmake -S ... -B ... -DMYLIB_TESTING=OFF [прочие опции ...]

Soláthraíonn sé an cumas tógáil tástála aonad agus spriocdhíriú a dhíchumasú check. Mar thoradh air sin, déantar tomhas clúdach cód de réir tástálacha a mhúchadh (féach. MYLIB_COVERAGE).

Déantar tástáil a dhíchumasú go huathoibríoch freisin má tá an tionscadal ceangailte le tionscadal eile mar fhothionscadail ag baint úsáide as an ordú add_subdirectory.

MYLIB_DOXYGEN_LANGUAGE

cmake -S ... -B ... -DMYLIB_DOXYGEN_LANGUAGE=English [прочие опции ...]

Aistríonn sé teanga an doiciméid a ghineann an sprioc doc don cheann tugtha. Le haghaidh liosta de na teangacha atá ar fáil, féach An láithreán gréasáin córas doxygen.

Tá Rúisis cumasaithe de réir réamhshocraithe.

Spriocanna an Tionóil

De réir réamhshocraithe

cmake --build path/to/build/directory
cmake --build path/to/build/directory --target all

Mura bhfuil an sprioc sonraithe (atá comhionann leis an sprioc all), bailíonn sé gach rud is féidir, agus glaonna ar an sprioc freisin check.

mylib-aonad-tástálacha

cmake --build path/to/build/directory --target mylib-unit-tests

Tiomsaíonn tástálacha aonaid. Cumasaithe de réir réamhshocraithe.

seiceáil

cmake --build путь/к/сборочной/директории --target check

Ritheann na tástálacha aonaid bailithe (bailithe, mura bhfuil cheana). Cumasaithe de réir réamhshocraithe.

См. также mylib-unit-tests.

clúdach

cmake --build путь/к/сборочной/директории --target coverage

Anailís a dhéanamh ar thástálacha aonaid a rith (ritheann, mura bhfuil cheana) le haghaidh clúdach cód trí thástálacha a úsáideann an clár gcovr.

Breathnóidh an sciath sceite rud éigin mar seo:

------------------------------------------------------------------------------
                           GCC Code Coverage Report
Directory: /path/to/cmakecpptemplate/include/
------------------------------------------------------------------------------
File                                       Lines    Exec  Cover   Missing
------------------------------------------------------------------------------
mylib/myfeature.hpp                            2       2   100%   
------------------------------------------------------------------------------
TOTAL                                          2       2   100%
------------------------------------------------------------------------------

Níl an sprioc ar fáil ach amháin nuair a bhíonn an rogha cumasaithe MYLIB_COVERAGE.

См. также check.

duga

cmake --build путь/к/сборочной/директории --target doc

Tosaíonn giniúint doiciméadú cód ag baint úsáide as an gcóras Docsaigin.

bosca slaite

cmake --build путь/к/сборочной/директории --target wandbox

Breathnaíonn an freagra ón tseirbhís rud éigin mar seo:

{
    "permlink" :    "QElvxuMzHgL9fqci",
    "status" :  "0",
    "url" : "https://wandbox.org/permlink/QElvxuMzHgL9fqci"
}

Úsáidtear an tseirbhís chuige seo Bosca Wand. Níl a fhios agam cé chomh solúbtha agus atá a gcuid freastalaithe, ach is dóigh liom nár cheart an deis seo a úsáid.

Примеры

Tóg an tionscadal i mód dífhabhtaithe le tomhas clúdach

cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DCMAKE_BUILD_TYPE=Debug -DMYLIB_COVERAGE=ON
cmake --build путь/к/сборочной/директории --target coverage --parallel 16

Tionscadal a shuiteáil gan réamhthionól agus tástáil

cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DMYLIB_TESTING=OFF -DCMAKE_INSTALL_PREFIX=путь/к/установойной/директории
cmake --build путь/к/сборочной/директории --target install

Tóg i mód scaoileadh le tiomsaitheoir ar leith

cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_PREFIX_PATH=путь/к/директории/куда/установлены/зависимости
cmake --build путь/к/сборочной/директории --parallel 4

Doiciméid a ghiniúint i mbéarla

cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DCMAKE_BUILD_TYPE=Release -DMYLIB_DOXYGEN_LANGUAGE=English
cmake --build путь/к/сборочной/директории --target doc

Uirlisí

  1. CMake 3.13

    Go deimhin, níl ach leagan CMake 3.13 ag teastáil chun cuid de na horduithe consól a thuairiscítear sa chabhair seo a rith. Ó thaobh chomhréir na scripteanna CMake de, is leor leagan 3.8 má thugtar giniúint ar bhealaí eile.

  2. Leabharlann tástála dochtúr

    Is féidir tástáil a dhíchumasú (féach опцию MYLIB_TESTING).

  3. Docsaigin

    Chun an teanga ina gineadh an doiciméadú a athrú, cuirtear rogha ar fáil MYLIB_DOXYGEN_LANGUAGE.

  4. Ateangaire teanga Python 3

    Le haghaidh giniúna uathoibríoch boscaí gainimh ar líne.

Anailís statach

Le CMake agus cúpla dea-uirlisí, is féidir leat anailís statach a sholáthar gan mórán iarrachta.

Seiceáil cpp

Tá tacaíocht ionsuite ag CMake d'uirlis anailíse statach Seiceáil cpp.

Chun seo a dhéanamh ní mór duit an rogha a úsáid CMAKE_CXX_CPPCHECK:

cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_CPPCHECK="cppcheck;--enable=all;-Iпуть/к/исходникам/include"

Tar éis seo, seolfar anailís statach go huathoibríoch gach uair a dhéantar an fhoinse a thiomsú agus a ath-thiomsú. Ní gá aon rud breise a dhéanamh.

Clag

Le cabhair ó uirlis iontach scan-build Is féidir leat anailís statach a rith in am ar bith freisin:

scan-build cmake -S путь/к/исходникам -B путь/к/сборочной/директории -DCMAKE_BUILD_TYPE=Debug
scan-build cmake --build путь/к/сборочной/директории

Anseo, murab ionann agus an cás le Cppcheck, ní mór duit an tógáil a reáchtáil gach uair tríd scan-build.

Afterword

Is córas an-chumhachtach agus solúbtha é CMake a ligeann duit feidhmiúlacht a chur i bhfeidhm do gach blas agus dath. Agus, cé go bhfágann an chomhréir mórán le bheith inmhianaithe uaireanta, níl an diabhal fós chomh uafásach agus atá sé péinteáilte. Bain úsáid as an gcóras tógála CMake ar mhaithe leis an tsochaí agus leis an tsláinte.

Íosluchtaigh múnla tionscadal teachín

Foinse: will.com

Add a comment