ΠΡΠΈΠ²Π΅Ρ,
Π― Π΄Π΅Π»Π°Ρ (Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ) ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Archlinux (ΠΌΠΎΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²), ΠΈ makepkg
(ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°) ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ ΠΌΠ΅Π½Ρ, ΡΡΠΎ xxhsum
ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ±ΠΎΡΠΊΠΈ.
Π― ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» ΡΡΠΎ Ρ
$ strings xxhsum | grep BUILD_DIR
ΠΈ Π½Π°ΡΠ΅Π» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΡΠ»Π°Π³ΠΎΠΌ --save-temps
Π΄Π»Ρ gcc ΠΈ Π½Π°ΡΠ΅Π» BUILD_DIR
Π² ΡΠ°ΠΉΠ»Π΅ xxhsum.o.s
. Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΠΎΡΠΌΠ°Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π½ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΎΠ½ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ XXXbenchHash
. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠ° ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² xxhsum
, Ρ Π½Π΅ Π²ΠΈΠΆΡ ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
Π― Π±Ρ Ρ ΠΎΡΠ΅Π» ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (ΡΠΌ., ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈΒ»), Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΏΠΎΡΠ΅ΡΡΠ»ΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ.
Π ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ xxhsum.c
Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° BUILD_DIR
.
Π― ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π» Π΅Π³ΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Linux mint ΠΈ ΡΠ΄Π΅Π»Π°Π» ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΡΠΎ ΠΈ Π²Ρ:
$ strings xxhsum | grep BUILD_DIR
$
ΠΠ½ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²Π΅ΡΠ½ΡΠ».
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ.
Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π²ΠΌΠ΅ΡΡΠΎ BUILD_DIR, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΠΏΡΠ°Π²Ρ, ΡΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡ ΠΌΠΎΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ. Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠΎΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Ρ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ:
$ cd DIR_WITH_UNPACKED_SOURCE
$ mkdir build
$ cmake ../xxHash-0.6.5
$ make
$ strings xxhsum | grep BUILD_DIR
BUILD_DIR:
DIR_WITH_UNPACKED_SOURCE/xxHash-0.6.5/xxhsum.c
Π‘ΡΠ΅Π΄Π°: bash 4.4.023, gcc 8.1.1 20180531, binutils 2.30, cmake 3.11.4, make 4.2.1, glibc 2.27.
ΠΡ
, Ρ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» cmake
, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΡΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ make
:
$ cd XXH_SRC_DIR
$ make
$ strings xxhsum | grep BUILD_DIR
$
cmake
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ (ΠΎΡΡΡΠ΄Π° ΠΈ Β«Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉΒ» ΡΠ΅Π³), ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²ΡΠ΅Ρ
Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ Makefile
.
ΠΡΠΈΠ²Π΅Ρ,
Π΄Π»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Ρ Π½Π°ΡΠ΅Π» ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΊΡΠ°ΡΡΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» CMakeLists.txt
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π²Π΅ΡΡ
Π½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
ΠΠ»ΠΈΠ½Π½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ: ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ __FILE__
Π²ΠΎ Π²ΡΠ΅Ρ
Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Ρ
. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΠΏΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡ assert
. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ __FILE__
ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ) Π΄ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ cmake
- ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π²Π½Π΅ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ __FILE__
Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ __FILE__
. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ cmake
ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Π²ΡΡΠ΅.
ΠΡΠΈΠ²Π΅Ρ!
Π― ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ assert
ΠΌΠ°ΠΊΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ (void)0
Π΅ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ NDEBUG
.
NDEBUG
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ CMake Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ CMAKE_BUILD_TYPE ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ _ "Release" _ (Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Unix Makefiles), ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ --config Release
(Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Xcode) .
ΠΠ»Ρ ΡΠΈΠΏΠ° ΡΠ±ΠΎΡΠΊΠΈ _ "RelWithDebInfo" _ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ NDEBUG
ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ
ΠΈΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ°Ρ
CMake.
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ».
Π£Π΄Π°ΡΠΈ!
ΠΠΎΠ³ΠΈΠΊΠ° Π΄Π»Ρ assert
Π±ΡΠ»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ββΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π΄Π΅ΡΡ:
https://github.com/Cyan4973/xxHash/blob/dev/xxhash.c#L146
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² xxhash
ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ
, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ DEBUGLEVEL
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ >= 1
.
ΠΠ°ΠΆΠ΅ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ assert()
Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² NDEBUG
.
ΠΠ°ΠΊΠΈΠΌ Π±Ρ Π½ΠΈ Π±ΡΠ»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ DEBUGLEVEL
,
NDEBUG
Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½,
ΠΎΠ½ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° xxhash
(ΠΎΠ±ΡΡΠ½ΠΎ Ρ XXH_INLINE_ALL
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ).
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π°.
Π― ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» cmake
-ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ xxhsum
Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Linux, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ strings
, ΠΈ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° BUILD_DIR
.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ,
Π΄Π»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Ρ Π½Π°ΡΠ΅Π» ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΊΡΠ°ΡΡΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ»
CMakeLists.txt
ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.ΠΠ»ΠΈΠ½Π½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ: ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ
__FILE__
Π²ΠΎ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Ρ . Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ ΠΏΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡassert
. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅__FILE__
ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ) Π΄ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉcmake
- ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π²Π½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΠΊΡΠΎΡ__FILE__
Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ__FILE__
. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡcmake
ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Π²ΡΡΠ΅.