projektek építeni az alapokat

Néhány évvel ezelőtt, találkoztunk Autotools. Annak ellenére, hogy Autotools még ma is használják sok híres projektek nyílt forráskódú eszköz, amely aligha nevezhető egy különösen kényelmes. Ezen túlmenően, ez általában csak akkor működik, * nix rendszereken, és néhány Windows Autotools használni, mondjuk, nagyon nehéz. Általában Autotools - Legacy, és a normális programozók korunk akarják használni CGyõzõdjön vagy például SCons. Ebben a cikkben megnézzük CGyõzõdjön.

Használata CGyõzõdjön a legegyszerűbb esetben a következő. A gyökere a tároló létrehozása CMakeLists.txt fájlt erről a tartalom:

cmake_minimum_required (3.1 verzió)

find_library (PTHREAD_LIBRARY pthread)
find_library (PCRE_LIBRARY PCRE)

include_directories (közé)
set (CMAKE_CXX_STANDARD 17)
set (CMAKE_CXX_STANDARD_REQUIRED on)
set (CMAKE_CXX_FLAGS "$ -Wall -Wextra -Werror")

add_executable (fő src / main.cpp src / HttpServer.cpp)

Remélhetőleg néhány sort itt, ami azt jelenti, hogy nem kell magyarázni. Ezután a forrás hozzá a src könyvtárat és a header fájlokat - az include könyvtárban. Építeni a projekt mondás:

mkdir építmények
cd építmények
CEllenõrizze.
csinál

Egyszerű, nem?

Amellett, hogy a fenti find_library a CGyõzõdjön számos szkriptek kapcsolat-specifikus könyvtárak. Különösen OpenGL kapcsolat így néz ki:

find_package (OpenGL szükséges)

CVégezze megadhatja egy adott típusú Makefile állományok, hogy azt szeretné, hogy a kimenet:

Különösen sok programozó, hogy gyorsítsák a build projektek inkább a Ninja:

CEllenõrizze -G Ninja.
ninja -j1

Válasszon a hibakeresés és a kiadás épít a következőképpen zajlik:

CEllenõrizze -DCMAKE_BUILD_TYPE = Release -G Ninja.
CEllenõrizze -DCMAKE_BUILD_TYPE = RelWithDebInfo -G ninja.
CEllenõrizze -DCMAKE_BUILD_TYPE = MinSizeRel -G ninja.
# Debug alapértelmezett
CEllenõrizze -DCMAKE_BUILD_TYPE = Hibakeresés -G ninja.

Ahelyett, hogy fut közvetlenül kezdeményezhet vagy ninja tud mondani valami ilyesmit:

CEllenõrizze --build. --config Release --target fő

Megadhatja konkrét fordítóprogram építeni a projekt

CEllenõrizze -DCMAKE_C_COMPILER = `which gcc` \
-DCMAKE_CXX_COMPILER = `which g ++` -G ninja.

... valamint további válogatás zászlók:

CEllenõrizze -DCMAKE_C_FLAGS = "-O0 -g" -DCMAKE_CXX_FLAGS = "-O0 -g".

CEllenõrizze -DCMAKE_C_FLAGS = "-O0 -g -fprofile-ívek -ftest lefedettség" \
-DCMAKE_EXE_LINKER_FLAGS = "-lgcov".

C / C ++ világ gyakran előfordul, hogy a harmadik fél könyvtárak használó CGyõzõdjön, csatlakozik a projekt segítségével sabmoduley Git. Csatlakozó ezek a könyvtárak a projekt viszonylag egyszerű:

cmake_minimum_required (VERSION 2.8)

include_directories (deps / algoritmusok / include)
add_subdirectory (deps / algoritmusok / src)

add_executable (rbtree_example rbtree_example.c)
target_link_libraries (rbtree_example CAlgorithms)

Másfelől, a könyvtár src / CMakeList.txt fájlnak kell lennie valami ilyesmit:

cmake_minimum_required (VERSION 2.8)

add_library (CAlgorithms STATIKAI
struct / ilist.c
struct / rbtree.c
struct / htable.c
common / utils.c
)

Általában add_subdirectory vehet az utat, hogy minden könyvtárban, amelyben CMakeLists.txt fájlba. Ez lehetővé teszi, hogy szét a projektet alprojektek még egyetlen adattár. Ismét a könyvtárak esetében, ez lehetővé teszi, hogy a vizsgálatok egy külön al-projekt, amely nem fog befolyni, ha csatlakozunk egy harmadik fél könyvtári projektek.

Például a gyökér CMakeList.txt könyvtár lehet:

cmake_minimum_required (VERSION 2.8)

add_subdirectory (SRC)
add_subdirectory (teszt)

Vizsgálatok közvetlenül adjuk hozzá a projekt az alábbiak szerint:

cmake_minimum_required (VERSION 2.8)

set (CMAKE_C_FLAGS "$ -O0 -g")

add_executable (test_htable test_htable.c)
target_link_libraries (test_htable CAlgorithms)

add_executable (test_rbtree test_rbtree.c)
target_link_libraries (test_rbtree CAlgorithms)

add_test (test_htable "./test_htable")
add_test (test_rbtree "./test_rbtree")

Lefolytatja a vizsgálatot végzik, egy egyszerű paranccsal:

Márka teszt
# Vagy szerepeltetésével hibakereső:
make test ARGS = "-V"
# Vagy ha használja a ninja:
ninja teszt

... kész a build könyvtárban.

Ha bármilyen PyTest. Csak csatolja CMakeList.txt valami hasonló:

find_package (PythonInterp SZÜKSÉGES)

add_test (NAME python_test
COMMAND py.test --capture = nincs $ /tests/run.py)

tesztkimenettel van írva a Vizsgálat / Ideiglenes / LastTest.log fájlt. Mellesleg, a részleteket a környezeti változók rendelkezésre CGyõzõdjön, például CMAKE_SOURCE_DIR, megtalálható itt.

Amellett, hogy a fenti funkciók gyakran megtalálható, hogy a projektek különböző támogatási lehetőségeket. Különösen azt használják Assimp és LLDB. Ha építeni a projekt lehetőségek közül választhat:

CEllenõrizze -DLLDB_DISABLE_CURSES: BOOL = TRUE.
CEllenõrizze -DASSIMP_BUILD_ASSIMP_TOOLS = OFF.

Opció általában a dokumentációban leírt, de egy csipet lehet megtekinteni, és átkok interfész:

Egy üzenet, persze, nem lehet figyelembe venni az összes lehetőséget CGyõzõdjön. Azonban a fenti adatok akkor elegendőnek kell lennie a 90% -ában. Teljes példák használata CVégezze, meg fogja találni, például ezt. ezt. valamint a tárolók GitHub. Példák használata lehetőséget, és feltételes utasítások megtalálhatók a tárolókban már említett Assimp és LLDB. És, persze, sok hasznos megtalálható a hivatalos honlapján CGyõzõdjön.

Attól függetlenül, hogy a CGyõzõdjön, és ha igen, vajon használ néhány képességek, amelyeket nem a fent leírt?

Mint a bejegyzést? Oszd meg másokkal:

(Meg kell adni JS)

Kapcsolódó cikkek