Qt, ΠΡΠΎΠ΅ΠΊΡ, Π‘ΡΡΡΠΊΡΡΡΠ°
Qt ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΠ°Π» ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ SDK Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ. ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ: *nix, Windows ΠΈ MacOS, Π° ΠΌΠΎΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅ΡΠ°ΡΡ Π΄Π°ΠΆΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π±Π°Π·Π΅ pro-ΡΠ°ΠΉΠ»Π° Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ Π΅Π΅ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° C/C++, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Qt’Π°. Π ΡΠ°ΠΊΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΡ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ.
ΠΠ°ΡΠ½Π΅ΠΌ ΡΡΠ°Π·Ρ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
. βββ bin βΒ Β βββ debug βΒ Β βββ release βββ build βΒ Β βββ debug βΒ Β βββ release βββ import βββ include βββ lib.linux βββ lib.win32 βββ src βΒ Β βββ include βΒ Β βββ MyApp βΒ Β βββ MyLib βββ tests βββ MyLibTest
ΠΠ° Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅ Ρ Π½Π°Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ 8 ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
bin/
Π‘ΡΠ΄Π° Π±ΡΠ΄ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ»Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ debug/
ΠΈ release/
ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
build/
Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ obj
, moc
, rcc
ΠΈ ui
ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΎΡΠ²Π΅Π΄Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ bin/
ΠΎΠ½ ΡΠ°Π·Π±ΠΈΡ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ debug/
ΠΈ release/
Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ.
import/
Π‘Π΅ΠΉΡΠ°Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
ΠΏΠ°ΠΏΠΊΠ°Ρ
ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊ Π½ΠΈΠΌ ΠΏΡΡΠΈ, Π½ΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². ΠΡΡΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅ΠΌΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠΈ. ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ, Π½ΠΎ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ
h
-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΠΈΠΌΠ΅Π½.
include/
Π‘ΡΠ΄Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈ h
-ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°Π·Π²Π°ΡΡ Π½Π΅ include/
, Π° export/
, Π½ΠΎ ΡΡΠΎ ΡΠΆΠ΅ Π΄Π΅Π»ΠΎ Π²ΠΊΡΡΠ°. ΠΠ½ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΡΡΡΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠΈΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ Π²Π°ΡΠΈ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ lib.*/
, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅.
lib.(linux|win32)/
Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π²Π΅ΡΡΠΈΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Ρ Π½ΡΠΆΠ½ΡΠΌ ΡΡΡΡΠΈΠΊΡΠΎΠΌ linux
ΠΈΠ»ΠΈ win32
. Π― Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ MacOS, Π½ΠΎ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π²Ρ Π±Π΅Π· ΡΡΡΠ΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½ΡΠΆΠ½ΡΠΉ ΡΡΡΡΠΈΠΊΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. Π‘ΡΠ΄Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² import/
, ΡΠ°ΠΊ ΠΈ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ ΡΠΆΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ lib.*/
.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π·Π°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π΄Π»Ρ win32-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° msvc ΠΈΠ· Visual Studio, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ Π½Π° *.lib
ΠΈ *.dll
ΡΠ°ΠΉΠ»Ρ. ΠΠ΅ΡΠ²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΎΠΌ, Π° Π²ΡΠΎΡΡΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ ΠΈΡ
ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΠΊΡΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ
*.lib
-ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π»Π΅ΠΆΠ°ΡΡ ΠΏΠΎ ΠΏΡΡΡΠΌ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌ *.so
-ΡΠ½ΠΈΠΊΠ°ΠΌ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎ ΠΊΡΠ΄Π° Π΄Π΅ΡΡ *.dll
-ΠΊΠΈ? ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΡ
ΡΡΠ΄ΠΎΠΌ Ρ *.lib
-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΠΎ ΡΠΎΠ³Π΄Π° ΠΈΡ
ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² bin/
. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΡ
ΡΡΠ°Π·Ρ Π² bin/
, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΡΠΎΡΡΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ gcc, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±Ρ Π½Π΅ ΡΡΠ°Π» ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΆΠ΅ ΡΠΌΡΡΠ»Π° Π½Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΡΠ΅ΡΠΎΠΌ Π²ΡΠ΅Ρ
ΠΏΠ»ΡΡΠΎΠ² ΠΈ ΠΌΠΈΠ½ΡΡΠΎΠ² Ρ ΡΠ°ΠΌ Ρ
ΡΠ°Π½Ρ *.dll
-ΡΠ°ΠΉΠ»Ρ ΡΡΠ΄ΠΎΠΌ Ρ *.lib
-Π°ΠΌΠΈ.
src/
Π Π½Π΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π·Π°Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π»Π΅ΠΆΠ°ΡΡ cpp
-ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ h
-ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
include/
Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄Π΅Ρ Π½Π° ΡΠΊΡΠΏΠΎΡΡ ΡΠ°ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΡ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π½Π°ΡΠΈΡ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡ
ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ src/include/
. Π Π½Π΅Π³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π½Π°Π±ΠΎΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² Π½Π°ΡΠΈΡ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ.
tests/
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π΅ΡΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ²Π°ΡΡ Π»ΠΈΡΠ½ΠΈΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π½ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΎ ΡΠΎΠΆΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½Ρ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ , ΡΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΉΠ»Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΡΠΈΠ»ΠΈΡΡ qmake
, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π½Π°Π±ΠΎΡ Makefile
‘ΠΎΠ². ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ, ΡΡΠΈΠ»ΠΈΡΠ°
qmake
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ Π΄Π»Ρ Π»ΡΠ±ΡΡ
C/C++ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° C++, Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ GTK+ ΠΈΠ»ΠΈ Win32 API, ΡΠΎ Π²Π°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°.
MyProject.pro
ΠΠ»Π°Π²Π½ΡΠΉ pro
-ΡΠ°ΠΉΠ» Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Visual Studio ΡΡΠΎΡ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Solution.
TEMPLATE = subdirs SUBDIRS += \ src/MyApp \ src/MyLib
ΠΠ»Ρ Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Qt-ΡΠ°Π±Π»ΠΎΠ½ subdirs
, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ-ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ app
-ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΡΠΎ ΡΠ°ΠΊ, Π½ΠΎ ΡΠ°Π±Π»ΠΎΠ½
Π½Π΅ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Ρ Π½Π° ΡΡΠΎΠΌ Π½Π΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅. ΠΠ°ΡΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ ΠΌΠ΅Π½ΡΡΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π½Π°Ρ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π° ΠΌΠΎΠ΄ΡΠ»Ρ: MyApp
— ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ MyLib
— Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΏΡΡΡΠΈΡΡΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π½ΠΈΠΆΠ΅ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Ρ MyApp
ΠΈ MyLib
, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ
pri
-ΡΠ°ΠΉΠ»ΠΎΠ².
common.pri
ΠΠ±ΡΠΈΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΡΡΠ΅ΠΉ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅:
PROJECT_ROOT_PATH = $${PWD}/ win32: OS_SUFFIX = win32 linux-g++: OS_SUFFIX = linux CONFIG(debug, debug|release) { BUILD_FLAG = debug LIB_SUFFIX = d } else { BUILD_FLAG = release } LIBS_PATH = $${PROJECT_ROOT_PATH}/lib.$${OS_SUFFIX}/ INC_PATH = $${PROJECT_ROOT_PATH}/include/ IMPORT_PATH = $${PROJECT_ROOT_PATH}/import/ BIN_PATH = $${PROJECT_ROOT_PATH}/bin/$${BUILD_FLAG}/ BUILD_PATH = $${PROJECT_ROOT_PATH}/build/$${BUILD_FLAG}/$${TARGET}/ RCC_DIR = $${BUILD_PATH}/rcc/ UI_DIR = $${BUILD_PATH}/ui/ MOC_DIR = $${BUILD_PATH}/moc/ OBJECTS_DIR = $${BUILD_PATH}/obj/ LIBS += -L$${LIBS_PATH}/ INCLUDEPATH += $${INC_PATH}/ INCLUDEPATH += $${IMPORT_PATH}/ linux-g++: QMAKE_CXXFLAGS += -std=c++11
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΡ ΠΊ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΡΠΈ:
PROJECT_ROOT_PATH = $${PWD}/
ΠΠ°Π»Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠΎ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ ΠΠ‘ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΡΠΊΠ°, ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΈΠΊΡΠ° OS_SUFFIX
. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΈΠΊΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ
.
win32: OS_SUFFIX = win32 linux-g++: OS_SUFFIX = linux
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ (debug
ΠΈΠ»ΠΈ release
) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ BUILD_FLAG
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π²Π΅ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π² bin/
ΠΈ build/
:
CONFIG(debug, debug|release) { BUILD_FLAG = debug LIB_SUFFIX = d } else { BUILD_FLAG = release }
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΡΡΠΈΠΊΡ LIB_SUFFIX
. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ»ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» d
. ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²
lib.win32/
Ρ Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠ±Π΅ Π²Π΅ΡΡΠΈΠΈ MyLib.lib
ΠΈ MyLibd.lib
.
ΠΠ°Π»Π΅Π΅ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΡΡΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ lib.*/
, ΠΊ ΠΎΡΠΊΡΡΡΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ include/
, ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ import/
ΠΈ ΠΏΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ Ρ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ°ΠΌΠΈ bin/
:
LIBS_PATH = $${PROJECT_ROOT_PATH}/lib.$${OS_SUFFIX}/ INC_PATH = $${PROJECT_ROOT_PATH}/include/ IMPORT_PATH = $${PROJECT_ROOT_PATH}/import/ BIN_PATH = $${PROJECT_ROOT_PATH}/bin/$${BUILD_FLAG}/
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ LIBS_PATH
ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π½Π°ΡΠΈΠΌ OS_SUFFIX
, Π° Π² ΠΊΠΎΠ½ΡΠ΅ BIN_PATH
ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ»ΠΈ BUILD_FLAG
, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠ΅ΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄ΡΠΌΠΊΠΎΠΉ ΠΏΠΎ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΠ‘ ΠΈ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠΈΠΆΠ΅ ΡΡΠΎΠΈΡ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅Ρ ΠΏΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² rcc
, ΡΠ°ΠΉΠ»ΠΎΠ² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ui
, ΠΠΠ-ΡΠ°ΠΉΠ»ΠΎΠ² moc
ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² obj
:
BUILD_PATH = $${PROJECT_ROOT_PATH}/build/$${BUILD_FLAG}/$${TARGET}/ RCC_DIR = $${BUILD_PATH}/rcc/ UI_DIR = $${BUILD_PATH}/ui/ MOC_DIR = $${BUILD_PATH}/moc/ OBJECTS_DIR = $${BUILD_PATH}/obj/
ΠΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΎΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
TARGET
, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ, ΡΠΎ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ LIBS
ΠΈ INCLUDEPATH
ΡΠΎΠΆΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π΅:
LIBS += -L$${LIBS_PATH}/ INCLUDEPATH += $${INC_PATH}/ INCLUDEPATH += $${IMPORT_PATH}/
ΠΠ»ΡΡ -L
ΠΏΠ΅ΡΠ΅Π΄ $${LIBS_PATH}
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΊΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ. Π ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ -l
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
LIBS += -lMyLib
ΠΡΠΈ ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ°Π·Π½ΡΡ ΠΠ‘ ΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌ.
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ C++11, ΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π΅Π΅ Π½Π΅ Π·Π°Π±ΡΡΡ:
linux-g++: QMAKE_CXXFLAGS += -std=c++11
app.
pri
ΠΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ ΠΎΠ±ΡΠ΅Π΅. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π² pri
-ΡΠ°ΠΉΠ»Π΅:
DESTDIR = $${BIN_PATH}/ linux-g++: QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/../../lib.$${OS_SUFFIX}/
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ DESTDIR
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΡΠΎ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ bin/debug/
, Π»ΠΈΠ±ΠΎ bin/release/
.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π Windows ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π Π² Linux ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ ΠΎΠΏΡΡΡΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π½ΠΎ ΡΠΎΠ³Π΄Π°:
/etc/ld.so.conf
;LD_LIBRARY_PATH
.ΠΠ°ΡΠΈΠ°Π½Ρ Ρ LD_LIBRARY_PATH
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ root
-ΠΏΡΠ°Π²Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
#!/bin/sh export LD_LIBRARY_PATH=../../lib.linux/:../../lib.linux/import_dir/ ./MyApp
lib.pri
ΠΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΎΠΆΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ pri
-ΡΠ°ΠΉΠ»:
DESTDIR = $${LIBS_PATH}/ win32: DLLDESTDIR = $${BIN_PATH}/ VERSION = 1.0.0 QMAKE_TARGET_COPYRIGHT = (c) My Company Name
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ DESTDIR
ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΌΡΡΠ», ΠΊΠ°ΠΊ ΠΈ Π² app.pri
.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Windows. ΠΠ½Π° ΡΠ΄ΠΎΠ±Π½Π° ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ *.dll
-ΡΠ°ΠΉΠ»Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π²Π°Ρ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Linux ΠΏΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ VERSION = 2.0.1
Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²ΠΈΠ΄Π° libMyLib.
. ΠΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Windows, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: so.2.0.1
MyLib2.dll
, Π° Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ VERSION
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠ΅Ρ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π° Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ «ΠΠ²ΡΠΎΡΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²Π°», Π½ΠΎ ΠΈ «ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°» Ρ «ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°». ΠΡΠΈ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
MyApp.pro
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ:
QT += core gui TARGET = MyApp TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui include( ../../common.pri ) include( ../../app.pri ) LIBS += -lMyLib$${LIB_SUFFIX}
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π΄Π»Ρ Qt-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΈ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΡΡ
ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΎΠ»ΡΡΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ QtCreator
, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 3 ΡΡΡΠΎΠΊΠΈ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° include
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π°ΡΠΈΡ
pri
-ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ
ΡΠ°Π½Π΅Π΅. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΈΠ»ΠΈΡΡ qmake
ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠ½Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ include( ../../common.pri )
Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π° app.pri
, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Ρ Π²Π°Ρ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ MyLib
Ρ ΡΡΡΡΠΈΠΊΡΠΎΠΌ LIB_SUFFIX
. ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² common.pri
, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ Π½Π°ΠΌ Π΅Π³ΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
MyLib.pro
include( ../../common.pri ) include( ../../lib.pri ) QT += core gui TARGET = MyLib$${LIB_SUFFIX} TEMPLATE = lib DEFINES += MYLIB_LIBRARY SOURCES += mylib.cpp HEADERS += ../../include/mylib.h \ ../../include/mylib_global.h win32 { QMAKE_TARGET_PRODUCT = My Lib QMAKE_TARGET_DESCRIPTION = It is my library }
ΠΠ΄Π΅ΡΡ ΡΠΎΠΆΠ΅ Π²ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ, Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
TARGET
Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΈΠΊΡ LIB_SUFFIX
ΠΈΠ· common.pri
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅;include/
;QMAKE_TARGET_PRODUCT
ΠΈ QMAKE_TARGET_DESCRIPTION
.ΠΠΎΡ ΠΌΡ ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° C++. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π½Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ qmake
Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΅ΠΉ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ½Π° Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΌΠ½ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ.
13
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² C++ ΠΊΠΎΠ΄Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠ΅ΡΡΡ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°.
Π£ ΡΠ°Π·Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½ΠΎΠΊ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΡ
Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ΄Π΅ΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ° ΠΏΠΎΠ΄ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΠ΅ ΠΠ‘ Windows ΠΈ Linux, MeeGo, ΠΠ½Π΄ΡΠΎΠΈΠ΄.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ *.pro ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΎ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ΄Π΅Ρ ΡΠ±ΠΎΡΠΊΠ°. Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ TARGET_OS, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°Π»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² *.pro ΡΠ°ΠΉΠ»Π΅. ΠΡΠΈ Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ Π½ΡΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
# Please, set manual your target OS
# ANY_OS — for any desktop Windows and Linux OS
# MEEGO_OS — for MEEGO
# ANDROID_OS — for Android
TARGET_OS=ANY_OS
ΠΠ°Π»Π΅Π΅ Π² *.pro-ΡΠ°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (Π΄Π΅ΡΠ°ΠΉΠ½Ρ) ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² C++ ΠΊΠΎΠ΄:
# Create define variable in C++ code
DEFINES+=»ANY_OS=1″
DEFINES+=»MEEGO_OS=2″
DEFINES+=»ANDROID_OS=3″
Π’Π°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ h-ΡΠ°ΠΉΠ»Π΅ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ:
#define ANY_OS 1
#define MEEGO_OS 2
#define ANDROID_OS 3
Π Π΄Π°Π»Π΅Π΅ Π² *.pro-ΡΠ°ΠΉΠ»Π΅ ΠΌΡ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Ρ ΠΈΠ½Ρ:
DEFINES+=»TARGET_OS=$${TARGET_OS}»
Π’Π°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ h-ΡΠ°ΠΉΠ»Π΅ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ TARGET_OS, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ TARGET_OS, Π·Π°Π΄Π°Π½Π½ΡΠΌ Π² *. pro ΡΠ°ΠΉΠ»Π΅:
#define TARGET_OS ANY_OS
Π ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ANY_OS ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ (ΠΈ ΡΠ°Π²Π½ΠΎ 1), ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΡ ΡΡΡΠΎΠΊΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π½ΡΡΡΠΈ *.pro ΡΠ°ΠΉΠ»Π° ΠΌΡ ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ TARGET_OS, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ANY_OS, MEEGO_OS, ANDROID_OS. Π Π²Π½ΡΡΡΠΈ C++ ΠΊΠΎΠ΄Π° ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ TARGET_OS, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ANY_OS, MEEGO_OS, ANDROID_OS (Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΈΠ΄ΠΈΡ ΡΠΈΡΠ»Π° 1, 2, 3).
Π *.pro ΡΠ°ΠΉΠ»Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ TARGET_OS ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ contains():
contains(TARGET_OS, ANY_OS) {
message(Building the any OS version…)
SYSTEM_PROGRAM_NAME=mytetra
BINARY_INSTALL_PATH=/usr/local/bin
}
contains(TARGET_OS, MEEGO_OS){
message(Building the MeeGo OS version…)
SYSTEM_PROGRAM_NAME=ru.webhamster.mytetra
BINARY_INSTALL_PATH=/opt/$${SYSTEM_PROGRAM_NAME}/bin
}
contains(TARGET_OS, ANDROID_OS){
message(Building the Android OS version. ..)
SYSTEM_PROGRAM_NAME=mytetra
BINARY_INSTALL_PATH=/
}
Π C++ ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°Π²Π°ΡΡ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ΄, ΡΠ΅ΡΠ΅Π· ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
#if TARGET_OS==ANY_OS
… ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ …
#endif
#if TARGET_OS==MEEGO_OS
… ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ …
#endif
#if TARGET_OS==ANDROID_OS
… ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄ …
#endif
ΠΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΡΠ΅Π½Ρ
ΠΎΡ Π‘ΡΠΈΠ»ΠΊΠ΅ΠΉΡ
Π‘Π²ΡΠ·Π°ΡΡΡΡ Ρ Π΄ΠΈΠ»Π΅ΡΠΎΠΌ
ΠΡΠΊΡΡΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
QtPro β ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π²ΡΠΊΠ° Ρ ΠΏΡΡΠΌΡΠΌ Π·Π²ΡΠΊΠΎΠ²ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΠΈ Π΄Π΅ΠΉΡΡΠ²Π΅Π½Π½Π°, ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠ΅, ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΏΠ»Π΅Π½ΡΠΌΠ΅.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΊ ΠΎΡΠΊΡΡΡΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
QtPro β ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·ΠΎΠ½. Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·Π»ΡΡΠ°ΡΠ΅Π»ΠΈ Ρ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ Π³ΡΠΎΠΌΠΊΠΎΡΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΎΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΡΠΈΡΠΎΠ² ΠΏΠ»ΠΎΡΠ°Π΄ΡΡ ΠΎΡ ΡΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠ² Π΄ΠΎ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΡΡΠΎΠ². Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π²ΡΠΊΠ° QtPro ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΡΠ·ΡΠΊΡ ΠΈ ΠΏΠ΅ΠΉΠ΄ΠΆΠΈΠ½Π³. Π‘Π΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ²Π½Ρ Π³ΡΠΎΠΌΠΊΠΎΡΡΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ.
ΠΡΠΊΡΡΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
QtPro ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π» Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΉ Π·Π²ΡΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±Π΅Π· ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ°ΠΏΡΠΎΡΠΈΠ², Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π²ΡΠΊΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π΅Π½ΡΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ Π½Π°Π΄ ΠΏΠΎΡΠΎΠ»ΠΊΠΎΠΌ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π·Π²ΡΠΊΠ° Π²Π²Π΅ΡΡ . ΠΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ (Π½Π°Π΄ ΠΏΠΎΡΠΎΠ»ΠΊΠΎΠΌ) Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Π·Π²ΡΠΊ ΡΠΈΠ»ΡΡΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΠ΅ ΠΈ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ΅ Π·Π²ΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅.
ΠΡΠΊΡΡΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π¨ΡΠΌ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΡΠΎ Π½Π΅ Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ. ΠΠ΅Π΄Π°Π²Π½ΠΈΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΌ ΠΈ Π½Π΅ΠΏΡΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½Π½ΠΎΡΡΡ ΡΠ°ΡΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ (Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΡΠΌ) Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΡΠΏΠΈΡΠΊΠ°Ρ
ΠΆΠ°Π»ΠΎΠ± ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊΠΈ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΡΠΈΠ»Π°ΡΡ Π±Ρ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡ
ΠΎΡΠΈΡΡ Π±ΡΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠΌΠ½ΡΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π»ΠΈ Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠΈ.
ΠΠ²ΡΠΊΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΡΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΡΠΈ.
360 ΠΡΡΠ½Π°Π»: Π‘Π»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΌΠ°
ΠΡΠΊΡΡΡΡ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π ΠΎΡΠΈΡΠ°Ρ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ ΡΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²: ΠΊΠΎΠ½Π΄ΠΈΡΠΈΠΎΠ½Π΅Ρ, Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠ΅ ΡΠΈΠ½Π³ΡΠΎΠ½Ρ, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ°, Π±Π»ΠΈΠ·Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎΡΡΡΠΎΠΉΠΊΠΈ, Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎβ Π³ΠΎΠ»ΠΎΡΠ° Π΄ΡΡΠ³ΠΈΡ Π»ΡΠ΄Π΅ΠΉ, β Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΠΆΡΠ»ΠΈΠ°Π½ Π’ΡΠ΅ΠΆΠ΅Ρ, ΠΏΡΠ΅Π΄ΡΠ΅Π΄Π°ΡΠ΅Π»Ρ Π±ΡΠΈΡΠ°Π½ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ°Π»ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ The Sound Agency. Π¨ΡΠΌΠ½Π°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡ ΡΠ΄ΡΠ°ΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΠ΄ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π³ΡΠΎΠΌΡΠ΅ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠΊΡΡΠ³ Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠΌΠ½Π΅Π΅ (ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΠΊΡ ΠΠΎΠΌΠ±Π°ΡΠ΄Π°).
Π§ΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΏΠΎ ΠΎΡΠΊΡΡΡΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΠΏΠΎ ΠΎΡΠΊΡΡΡΠΎΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅Β ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Ρ Π² ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ Π΄ΠΈΠ»Π΅ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ
ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ»Π΅ΡΠ°
Open image tooltip ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°. ΠΠ°ΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΌΠ°ΡΠ°, ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΉ Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ.
ΠΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π½Π°ΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² Β«ΠΎΡ ΠΊΠΎΠ»ΡΠ±Π΅Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ»ΡΠ±Π΅Π»ΠΈΒ»:
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ²ΡΠΊΠΎΠΌΠ°ΡΠΊΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ QtProβ’ ΠΠΊΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ
Π‘Π²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ
888. 783.3522
ΠΠ΅ΡΡΠ½ΡΠΉ Π΄ΠΈΠ»Π΅Ρ
ΡΠΏΡΠΎΡΠΈΠ»
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ 2 Π³ΠΎΠ΄Π°, 3 ΠΌΠ΅ΡΡΡΠ° Π½Π°Π·Π°Π΄
ΠΡΠΎΡΠΌΠΎΡΡΠ΅Π½ΠΎ 3ΠΊ ΡΠ°Π·
Π― ΠΏΡΡΠ°Π»ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ C++ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Qt. Π― Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ‘.pro’ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π³Π΄Π΅ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΡ SQL Π²ΡΡΡΠΏΠΈΠ»Π° Π² ΡΠΈΠ»Ρ.
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΎΠ·Π΄Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ — Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ qbs, qmake ΠΈΠ»ΠΈ cmake — Π² ΡΡΡΡΠΊΡΡΡΠ΅/ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» ‘.pro’.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Qt 5.15.2 (ΡΠ΅ΡΠ΅Π· QT Creator ) Ρ MinGW Kit ΠΈ cmake/qbs.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ SQL.
ΠΠΎΠΆΠ΅Ρ Ρ ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Ρ?
1
TL;DR: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ cmake. ΠΠ°Π±ΡΠ΄ΡΡΠ΅ ΠΎ qbs ΠΈ qmake.
ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΎΠ·Π΄Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ β Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ qbs, qmake ΠΈΠ»ΠΈ cmake β Π² ΡΡΡΡΠΊΡΡΡΠ΅/ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΠ» Β«.proΒ».
ΠΡΠΎΠ΅ΠΊΡ qmake Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ» .pro
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ qmake. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π²Ρ ΠΈΡΠ΅ΡΠ΅ Π½Π΅ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅? ΠΡΠΎΠ΅ΠΊΡ qbs Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ» .qbs
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ qbs. ΠΡΠΎΠ΅ΠΊΡ cmake Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ CMakeLists.txt
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ cmake. ΠΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
ΠΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΌΡΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°, Π² ΠΊΠΎΡΠΎΡΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ QT += widgets sql Π² ΡΠ°ΠΉΠ» .pro.
ΠΡΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ qmake, Π½Π°ΡΠΈΠ½Π°Ρ Ρ .