Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++. Π‘Π±ΠΎΡ€Π½ΠΈΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор Π”. БтСфСнс

Бвойства ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ <функция>Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ всСгда ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

exe hello

 : hello.cpp

 : <threading>multi

 ;

ΠžΡ‚ вас Π½Π΅ трСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ двоСточия, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° Boost.Build, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ значСния этих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

НСкоторыС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния пСрСчислСны Π² Ρ‚Π°Π±Π». 1.15.


Π’Π°Π±Π». 1.15. Часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Boost.Build

Ѐункция Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π­Ρ„Ρ„Π΅ΠΊΡ‚ include Path ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΏΡƒΡ‚ΡŒ для поиска Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² define name=[value] ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ макрос threading multi ΠΈΠ»ΠΈ single Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² runtime-link static ΠΈΠ»ΠΈ shared ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния¹ variant debug ΠΈΠ»ΠΈ release Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ сборку

ΒΉ Π‘ΠΌ. Ρ€Π΅Ρ†Π΅ΠΏΡ‚ 1.23.

Когда собираСтся Ρ†Π΅Π»Π΅Π²ΠΎΠΉ исполняСмый Ρ„Π°ΠΉΠ», ΠΈΠ»ΠΈ Ρ†Π΅Π»ΡŒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ статичСской ΠΈΠ»ΠΈ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Ρ„Π°ΠΉΠ», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этой Ρ†Π΅Π»ΠΈ, создаСтся Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, содСрТащСй Jam-Ρ„Π°ΠΉΠ». ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚ΡŒ этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ зависит ΠΎΡ‚ инструмСнтария ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки, Π½ΠΎ ΠΎΠ½ всСгда начинаСтся с bin. НапримСр, исполняСмый Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 1.8 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ bin/msvc/debug.

Для простоты я попросил вас ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Jam-Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 1.8 Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится исходный Ρ„Π°ΠΉΠ» hello.cpp. Однако Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π²Π°ΠΌ часто придСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходныС ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дирСкториях. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.8 Jam-Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² любоС мСсто ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΏΡƒΡ‚ΡŒ hello.cpp Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» hello.cpp.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ install ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Boost.Build ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° Π³Π»Π°Π²Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ мСсто. Π’Ρ‹Π·ΠΎΠ² этого ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.10.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.10. Π’Ρ‹Π·ΠΎΠ² ΠΏΡ€Π°Π²ΠΈΠ»Π° install

install имя-Ρ†Π΅Π»ΠΈ

 : Ρ„Π°ΠΉΠ»Ρ‹

 : трСбования

 : сборка-ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

 : трСбования-ΠΊ-использованию

 ;

Π—Π΄Π΅ΡΡŒ имя-Ρ†Π΅Π»ΠΈ β€” это имя объявляСмой Ρ†Π΅Π»ΠΈ, Π° Ρ„Π°ΠΉΠ»Ρ‹ β€” это список ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Ρ†Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β€” трСбования, сборка-ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ трСбования-ΠΊ-использованию β€” ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ значСния, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.9.

ΠœΠ΅ΡΡ‚ΠΎ, ΠΊΡƒΠ΄Π° Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скопированы, ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ имя Ρ†Π΅Π»ΠΈ, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства location Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Ρ†Π΅Π»ΠΈ. НапримСр, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.8 ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ install ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

install . : hello ;

Π—Π°Ρ‚Π΅ΠΌ установка исполняСмого Ρ„Π°ΠΉΠ»Π° выполняСтся Ρ‚Π°ΠΊ:

> bjam .

Однако ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.8, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‰Π΅ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ, Ρ‡Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π°.

НаконСц, Π΄Π°Π²Π°ΠΉΡ‚Π΅ быстро взглянСм Π½Π° синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки bjam. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ xxx, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструмСнтарий ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

> bjam xxx

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ xxx, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструмСнтарий yyy, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

> bjam xxx toolset=yyy

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ xxx, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π΅Ρ€ΡΠΈΡŽ vvv инструмСнтария yyy, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

> bjam Ρ…Ρ…Ρ…toolset=yyy-vvv

Π§Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ сборкС ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ zzz, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ синтаксис:

> bjam xxx stdlib=zzz

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ нСсколько Ρ†Π΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС нСсколько ΠΈΠΌΠ΅Π½ Ρ†Π΅Π»Π΅ΠΉ, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС Ρ†Π΅Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ†Π΅Π»Π΅ΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 1.9, просто Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

> bjam

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹, созданныС Π² процСссС сборки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ исполняСмый Ρ„Π°ΠΉΠ», Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

> bjam --clean

Бвойство Π² Π²ΠΈΠ΄Π΅ <функция>Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΊΠ°ΠΊ функция=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΆΠ΅

Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ 1.2 ΠΈ 1.15.

1.8. Π‘Π±ΠΎΡ€ΠΊΠ° статичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Boost.Build

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Boost.Build для сборки статичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π‘++, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ пСрСчислСнныС Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.1.

РСшСниС

Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, создайтС Ρ„Π°ΠΉΠ» Jamroot. Π’ Ρ„Π°ΠΉΠ»Π΅ Jamroot Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ lib, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΡƒΠΊΠ°Π·Π°Π² Π² качСствС исходных Ρ„Π°ΠΉΠ»ΠΎΠ² свои Ρ„Π°ΠΉΠ»Ρ‹ .cpp ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС трСбования свойство <link>static. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ поиска Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚. Π΅. Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ include для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ использованию Π² Π²ΠΈΠ΄Π΅ <include>ΠΏΡƒΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π²ΠΈΠ΄Π° <include>ΠΏΡƒΡ‚ΡŒ. НаконСц, Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, содСрТащСй Jamroot, запуститС bjam, ΠΊΠ°ΠΊ описано Π² Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π΅ 1.7.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ· исходных Ρ„Π°ΠΉΠ»ΠΎΠ², пСрСчислСнных Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.1, ваш Jamroot ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.11.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1.11. Jam Ρ„Π°ΠΉΠ» для сборки статичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libjohnpaul.lib ΠΈΠ»ΠΈ libjohnpaul.a

# Jamfile для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° libjohnpaul

lib libjohnpaul

: # исходники

john.cpp paul.cpp johnpaul.cpp

: # трСбования

<link>static

: # сборка-ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

: # трСбования-ΠΊ-использованию

<include>..

;

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

> bjam libjohnpaul

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ lib ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния Ρ†Π΅Π»ΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.9, ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ exe. ИспользованиС трСбования <include>.. освобоТдаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚ нСобходимости явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² своих трСбованиях Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ <link>static ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваша Ρ†Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° всСгда ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ статичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сборки Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠ°ΠΊ статичСской ΠΈ ΠΊΠ°ΠΊ динамичСской, опуститС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ <link>static. Π”ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ статичСская ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ динамичСская, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΈΠ»ΠΈ Π² трСбованиях Ρ†Π΅Π»ΠΈ, которая зависит ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр, Ссли Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.11 Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ <link>static ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ libjohnpaul ΠΊΠ°ΠΊ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, потрСбуСтся ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

> bjam libjohnpaul link=static

Однако написаниС исходного ΠΊΠΎΠ΄Π° для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ собрана ΠΈ ΠΊΠ°ΠΊ статичСская, ΠΈ ΠΊΠ°ΠΊ динамичСская, являСтся Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π΅ 1.9.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΆΠ΅

Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ 1.3, 1.11 ΠΈ 1.16.

1.9. Π‘Π±ΠΎΡ€ΠΊΠ° динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Boost.Build

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Boost.Build для сборки динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° исходных Ρ„Π°ΠΉΠ»ΠΎΠ² Π‘++, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ пСрСчислСнныС Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1.2.

РСшСниС

Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ, Ссли Π½Π°Π΄ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, создайтС Ρ„Π°ΠΉΠ» Jamroot. Π’ Ρ„Π°ΠΉΠ»Π΅ Jamroot Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ lib, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΡƒΠΊΠ°Π·Π°Π² Π² качСствС исходных Ρ„Π°ΠΉΠ»ΠΎΠ² свои Ρ„Π°ΠΉΠ»Ρ‹ .cpp ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² качСствС трСбования свойство <link>shared. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ поиска Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚.Π΅. Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ include для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ использованию Π² Π²ΠΈΠ΄Π΅ <include>ΠΏΡƒΡ‚ΡŒ. Если исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ компилятору, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ <include>ΠΏΡƒΡ‚ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ символы вашСй динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ экспортированы Π² Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ __declspec(dllexport), Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ <define>символ. НаконСц, Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, содСрТащСй Jamroot, запуститС bjam, ΠΊΠ°ΠΊ описано Π² Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π΅ 1.7.