8-900-374-94-44
[email protected]
Slide Image
МСню

Pro qt: Including .pro files — Qt Wiki

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Qt-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° C++ — IT Notes

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-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это Ρ‚Π°ΠΊ, Π½ΠΎ шаблон

subdirs Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля, Π΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ Π½Π° этом Π½Π΅ сэкономитС. Π—Π°Ρ‚ΠΎ Π² дальнСйшСм ΠΎΡ‡Π΅Π½ΡŒ часто оказываСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля Π±Ρ‹Π»ΠΎ нСдостаточно ΠΈ всС Ρ€Π°Π²Π½ΠΎ приходится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас всСго Π΄Π²Π° модуля: 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. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого суффикса Π±ΡƒΠ΄Π΅Ρ‚ использовано для вСтвлСния ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ

lib.*/.

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 позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ запуск скомпонованного исполняСмого Ρ„Π°ΠΉΠ»Π°. Если ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту строку, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π°:

  1. Π›ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² систСмных ΠΏΠ°ΠΏΠΊΠ°Ρ…, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся поиск;
  2. Π›ΠΈΠ±ΠΎ ΠΏΡƒΡ‚ΡŒ сборки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ систСмным с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π°ΠΉΠ»Π° /etc/ld.so.conf;
  3. Π›ΠΈΠ±ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° пСрСмСнная окруТСния 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. so.2.0.1. Но ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows, ΠΏΡ€ΠΈ этом имя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: 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
}

Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ всС достаточно стандартно, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  1. Π§Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ TARGET Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ суффикс LIB_SUFFIX ΠΈΠ· common.pri ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΅Π³ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π² самом Π½Π°Ρ‡Π°Π»Π΅;
  2. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ прСдполагаСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² дальнСйшСм ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, поэтому пСрСнСсСм ΠΈΡ… Π² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ include/;
  3. НазваниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ описаниС, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ описываСм для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… QMAKE_TARGET_PRODUCT ΠΈ QMAKE_TARGET_DESCRIPTION.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ рассмотрСли способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° C++. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ особой нСобходимости ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ qmake для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅ΠΉ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСнСниями ΠΎΠ½Π° Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования. Однако слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ сущСствуСт идСального способа ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² качСствС основы ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄ свои Π½ΡƒΠΆΠ΄Ρ‹.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ


QClipboard: ИспользованиС Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π² Qt

ΠžΠ΄Π½ΠΎΡΠ²ΡΠ·Π½Ρ‹ΠΉ список Π½Π° C++

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹Π΅ числа Π² C++

Python vs C++: Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ судоку

QListWidget: ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

МодСль-прСдставлСниС Π² Qt

Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° Π² Qt: ΠœΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π½Π΅ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² C++ Π½Π° основС ООП

13

Π‘Π±ΠΎΡ€ΠΊΠ° Qt-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм qmake с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Иногда ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² 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

БистСма Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ маскировки Qt Pro ΠΈ акустичСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ подсказку ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ стСны

ΠΎΡ‚ БтилкСйс

Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ с Π΄ΠΈΠ»Π΅Ρ€ΠΎΠΌ

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π—Π²ΡƒΠΊΠΎΠ²ΠΎΠ΅ сравнСниС
Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€
QtPro ΠΏΡ€ΠΎΡ‚ΠΈΠ² Plenum-Based

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π·Π²ΡƒΠΊΠ°

Π—Π²ΡƒΠΊΠΎΠ²ΠΎΠ΅ сравнСниС

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку изобраТСния

QtPro β€” это систСма маскирования Π·Π²ΡƒΠΊΠ° с прямым Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ, которая Π±ΠΎΠ»Π΅Π΅ эффСктивна ΠΈ дСйствСнна, Ρ‡Π΅ΠΌ старыС, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π² ΠΏΠ»Π΅Π½ΡƒΠΌΠ΅.

Π’Ρ‹Π±ΠΎΡ€ Π·Π²ΡƒΠΊΠ°

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€

Подсказка ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

QtPro β€” это комплСксноС ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ нСсколько Π·ΠΎΠ½. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ управлСния ΠΈ ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈ с Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ подходящиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для офисов ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ ΠΎΡ‚ тысяч ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ² Π΄ΠΎ сотСн тысяч ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ². Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π·Π²ΡƒΠΊΠ° QtPro ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ ΠΈ ΠΏΠ΅ΠΉΠ΄ΠΆΠΈΠ½Π³. Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ уровня громкости ΠΈ доступа ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ функциям ΠΏΠΎ локальной сСти.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ QtPro ΠΈ Plenum

QtPro ΠΏΡ€ΠΎΡ‚ΠΈΠ² Plenum-Based

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку изобраТСния

QtPro Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСляСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ настроСнный Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ сигнал нСпосрСдствСнно Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΉ Π·Π²ΡƒΠΊ Π²ΠΎ всСм пространствС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· слоТной настройки.

Напротив, Π² систСмах маскировки Π·Π²ΡƒΠΊΠ° Π½Π° основС ΠΏΠ»Π΅Π½ΡƒΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ Π½Π°Π΄ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠΎΠΌ для распространСния Π·Π²ΡƒΠΊΠ° Π²Π²Π΅Ρ€Ρ…. ΠŸΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΈΡ Π² пространствС (Π½Π°Π΄ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠΎΠΌ) Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Π·Π²ΡƒΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΠ΅ ΠΈ нСпрСдсказуСмоС Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

Π˜Π½ΡΠ°ΠΉΡ‚Ρ‹

Π¨ΡƒΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС
360 исслСдований

Π¨ΡƒΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС

Π¨ΡƒΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

Π¨ΡƒΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС

Π¨ΡƒΠΌ ΠΈ отсутствиС Ρ€Π΅Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС.

Π­Ρ‚ΠΎ Π½Π΅ новая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, просто постоянная. НСдавниС исслСдования ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΡˆΡƒΠΌ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½Π½ΠΎΡΡ‚ΡŒ частной ΠΆΠΈΠ·Π½ΠΈ (Π΄Π°ΠΆΠ΅ большС, Ρ‡Π΅ΠΌ ΡˆΡƒΠΌ) Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто Π² списках ΠΆΠ°Π»ΠΎΠ± Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ². ИсслСдования Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡΠΈΠ»Π°ΡΡŒ Π±Ρ‹, Ссли Π±Ρ‹ ΠΈΡ… офисы Π±Ρ‹Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡˆΡƒΠΌΠ½Ρ‹ΠΌΠΈ ΠΈ обСспСчивали Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ.

Звуковая маскировка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ маскировки Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ мСстС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Ρ‡ΠΈ.

Иди Π³Π»ΡƒΠ±ΠΆΠ΅

360 Π–ΡƒΡ€Π½Π°Π»: Блишком ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΡƒΠΌΠ°

360 ИсслСдования

360 исслСдований

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

360 Π–ΡƒΡ€Π½Π°Π»: слишком ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΡƒΠΌΠ°

Π’ офисах Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΡˆΡƒΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· самых Ρ€Π°Π·Π½Ρ‹Ρ… источников: ΠΊΠΎΠ½Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Ρ€, нСприятныС Ρ€ΠΈΠ½Π³Ρ‚ΠΎΠ½Ρ‹, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ транспорта, Π±Π»ΠΈΠ·Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ постройки, нСслоТныС систСмы Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ маскировки ΠΈ, особСнно— голоса Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй, β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π”ΠΆΡƒΠ»ΠΈΠ°Π½ Π’Ρ€Π΅ΠΆΠ΅Ρ€, ΠΏΡ€Π΅Π΄ΡΠ΅Π΄Π°Ρ‚Π΅Π»ΡŒ британской консалтинговой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ The Sound Agency. Шумная обстановка ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ люди Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΡ‡Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½ΠΈΡ… становится ΡˆΡƒΠΌΠ½Π΅Π΅ (извСстный ΠΊΠ°ΠΊ эффСкт Π›ΠΎΠΌΠ±Π°Ρ€Π΄Π°).

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ

.

Подсказка

Π˜Π·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ

Подсказка ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

ΠœΠΎΠ½Ρ‚Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Подсказка ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

Установка Π² стойку

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ подсказку ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

Qt Room Control

ВСхничСскиС характСристики

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΠΈ управлСния

Qt 100
  • Высота: 3,5β€³, ΡˆΠΈΡ€ΠΈΠ½Π°: 7β€³, Π³Π»ΡƒΠ±ΠΈΠ½Π°: 0,875β€³
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ управлСния ΠΎΠ΄Π½ΠΎΠΉ Π·ΠΎΠ½ΠΎΠΉ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ 120
    излучатСля ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ Π΄ΠΎ 12 000 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ².
Qt 300
  • Высота: 3,5β€³, ΡˆΠΈΡ€ΠΈΠ½Π°: 11β€³, Π³Π»ΡƒΠ±ΠΈΠ½Π°: 3,8β€³
  • Π’Ρ€Π΅Ρ…Π·ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ управлСния. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ 360 ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ
    , ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΎ 36 000 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ².
Qt 600
  • Высота: 3,5β€³, ΡˆΠΈΡ€ΠΈΠ½Π°: 13,5β€³, Π³Π»ΡƒΠ±ΠΈΠ½Π°: 3,8β€³
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ управлСния ΡˆΠ΅ΡΡ‚ΡŒΡŽ Π·ΠΎΠ½Π°ΠΌΠΈ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎ 720 ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π΄ΠΎ 72 000 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ².
ΠšΠΎΠΌΠ½Π°Ρ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ управлСния Qt

Π˜Π·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ

  • Π¨ΠΈΡ€ΠΈΠ½Π°: 3,5β€³, высота: 2,5β€³
  • ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ своСй систСмы Qt.
  • Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ громкости ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ излучатСля Π΄ΠΎ 9 Π΄Π‘ с шагом 3 Π΄Π‘.
  • ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ создания ΠΌΠΈΠΊΡ€ΠΎΠ·ΠΎΠ½ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒΡŽ Π΄ΠΎ 100 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΡ‚ΠΎΠ² (9,3 ΠΌ2).

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅Β ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ


Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ доступСн Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ…:

  • БСвСрная АмСрика
НСт Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² вашСм Ρ€Π΅Π³ΠΈΠΎΠ½Π΅?

Если Π²Ρ‹ заинтСрСсованы Π² ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСдоступСн Π² вашСм Ρ€Π΅Π³ΠΈΠΎΠ½Π΅, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ мСстному Π΄ΠΈΠ»Π΅Ρ€Ρƒ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… приобрСтСния.

НайдитС мСстного Π΄ΠΈΠ»Π΅Ρ€Π°

Open image tooltip

УстойчивоС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅

ΠŸΠ ΠžΠ•ΠšΠ’Π˜Π ΠžΠ’ΠΠΠ˜Π• Π”Π›Π― Π£Π‘Π’ΠžΠ™Π§Π˜Π’ΠžΠ“Πž Π ΠΠ—Π’Π˜Π’Π˜Π―

ΠœΡ‹ создаСм ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для людСй ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для всСго ΠΌΠΈΡ€Π°. Наши ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π½Π° основС стрСмлСния ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΌΠ°Ρ‚Π°, подкрСпляСмого устойчивыми ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ всСй нашСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ создания стоимости.
Наша концСпция устойчивого проСктирования Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ наша продукция разрабатываСтся с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Β«ΠΎΡ‚ ΠΊΠΎΠ»Ρ‹Π±Π΅Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ»Ρ‹Π±Π΅Π»ΠΈΒ»:

  • ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ использованиС исходных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²
  • БвСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ глобальноС ΠΏΠΎΡ‚Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ воздСйствия Π½Π° ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ
  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стратСгии окончания использования

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅
Π—Π²ΡƒΠΊΠΎΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ QtProβ„’ ЭкологичСский ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ

Π‘Π²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ

  • 888. 783.3522

  • ΠœΠ΅ΡΡ‚Π½Ρ‹ΠΉ Π΄ΠΈΠ»Π΅Ρ€

Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ

c++ — Qt: отсутствуСт Ρ„Π°ΠΉΠ» .pro?

спросил

ИзмСнСно 2 Π³ΠΎΠ΄Π°, 3 мСсяца Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 3ΠΊ Ρ€Π°Π·

Π― пытался ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ C++ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Qt. Π― наткнулся Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ руководств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ‘.pro’ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π³Π΄Π΅ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π°ΡΡ‚ΡŒ SQL вступила Π² силу.

Моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я создаю Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ — Π½Π΅Π²Π°ΠΆΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ qbs, qmake ΠΈΠ»ΠΈ cmake — Π² структурС/ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° отсутствуСт Ρ„Π°ΠΉΠ» ‘.pro’.

Π’ настоящСС врСмя я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Qt 5.15.2 (Ρ‡Π΅Ρ€Π΅Π· QT Creator ) с MinGW Kit ΠΈ cmake/qbs.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ с прилоТСниями Π½Π° основС SQL.

ΠœΠΎΠΆΠ΅Ρ‚ я Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽ?

  • c++
  • qt
  • qt-ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ

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, начиная с .

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *