ΠΠ°Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π΄Π»Ρ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΡΡ ΠΏΠΎ ΠΊΡΡΡΡ "ΠΠΠ (Π‘++)" Π€ΠΠ’ ΠΠΠ£
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π³ΠΈ Π½ΠΈΠΆΠ΅ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π½ΡΡΠ΅.
- ΠΠ°Π²ΠΎΠ΄ΠΈΠΌ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° GitHub.
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Git Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ (Π΄Π»Ρ Windows ΠΊΠ°ΡΠ°Π΅ΠΌ ΠΎΡΡΡΠ΄Π°).
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Windows, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ, Π³Π΄Π΅ Ρ
ΠΎΡΠΈΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ
Open Git Bash here
. - Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ SSH-ΠΊΠ»ΡΡ ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊ Π°ΠΊΠΊΠ°ΡΠ½ΡΡ Π½Π° GitHub, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΎΡΡΡΠ΄Π°.
- ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ
Use this template -> Create a new repository
Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ. ΠΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΡ, Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Private, ΠΆΠΌΠ΅ΠΌCreate repository
. - ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈΠ΄ΡΠΌ Π²
Settings -> Collaborators -> Add people
, Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ (dsavenko
), Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌAdd ...
. - Π ΠΎΠΊΠ½Π΅ Git Bash Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
git clone <git-ΡΡΡΠ»ΠΊΠ°>
. Git-ΡΡΡΠ»ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ (Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡCode
), ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄git@github.com:dsavenko/nsu-oop-cpp-template.git
. - Π ΠΏΠ°ΠΏΠΊΠ΅ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ Π»Π΅ΠΆΠΈΡ Π΅Π³ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ:
- Π‘ΠΎΠ·Π΄Π°ΡΡΠ΅, ΡΠ΄Π°Π»ΡΡΡΠ΅, ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
- Π§ΡΠΎΠ±Ρ Π·Π°Π»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° GitHub, ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΠ΅
Git Bash
Π² ΠΏΠ°ΠΏΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:$ git add . $ git commit -m "ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ" $ git push
- ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΡ Π·Π°Π»ΠΈΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
git status
:ΠΡΠ»ΠΈ Π²ΡΠ²Π΅Π»Π° ΡΠ°ΠΊΠΎΠ΅, ΡΠΎ Π²ΡΡ ΠΠ.$ git status On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean
- ΠΠΎΠΌΠΌΠΈΡΠΈΡΡ ΠΈ ΠΏΡΡΠΈΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Git Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
Π ΠΏΠ°ΠΏΠΊΠ΅ lab1 Π»Π΅ΠΆΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ CMake ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ GoogleTest.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
main.cpp
- ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈmain
. ΠΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅.task1/2.h
,task1/2.cpp
- ΡΠ°ΠΉΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ.task1/2_test.cpp
- ΡΠ΅ΡΡΡ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GoogleTest).CMakeLists.txt
- ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ CMake.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠ±ΠΎΡΠΊΠ΅:
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C++. ΠΠ»Ρ Windows ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Visual Studio (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠ΄ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΉ), Π½ΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, mingw/cygwin + gcc). ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ (Linux, Mac OS) ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ gcc.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ CMake.
ΠΠ°ΠΊ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
- CΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ
build
Π²Π½ΡΡΡΠΈ lab1. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π΅Ρ. ΠΡΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ· ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ. - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅
cmake ..
. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ»Π΄-ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅. ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
cmake --build .
(ΠΏΠΎΠ΄ Linux/MacOS/cygwin/mingw ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΡΠΎmake
). ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. - ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠΎΠ±ΡΠ°Π»ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ
nsuoop-cpp-template(.exe)
ΠΈtest(.exe)
. ΠΠΎΠ΄ Windows ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅ΠΆΠ°ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅Debug
.
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ CMake GUI.
Visual Studio ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ CMake, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π² Π½Π΅ΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΏΠΊΠΎΠΉ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ
out/build
, Π° Π½Π΅build
.
ΠΠ°ΠΊ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ h/cpp-ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° ΡΠ΄Π΅Π»Π°ΡΡ
cmake --build .
(ΠΈΠ»ΠΈmake
). ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ IDE, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠ°. - ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ
(ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΡ
) cpp-ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ
CMakeLists.txt
(ΡΠΌ. ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π½ΡΠΌ). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ½ΠΎΠ²Π° ΡΠ΄Π΅Π»Π°ΡΡcmake --build .
(ΠΈΠ»ΠΈmake
). ΠΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ h-ΡΠ°ΠΉΠ»Π°ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ. h-ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ, Π½Π΅ ΠΌΠ΅Π½ΡΡCMakeLists.txt
.
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Visual Studio ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ IDE,
CMakeLists.txt
Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡΠΈ IDE.