1

Тема: Підключення бібліотек в Eclipse під MinGW

Дану тему можна розглядати як своєрідне продовження теми "Як налаштувати MinGW (GCC) + eclipse (компілятор) зі скріншотами" від keithfay. Далі буде показано, яким чином можна підключити до проекту статичні та динамічні бібліотеки, навіть якщо у вас на руках - лише скачаний архів із сирцевим кодом.

Етап 1: Визначення початкового середовища та забезпечення

Вважатимемо, що на машині були встановлені Eclipse, MinGW (включно з MSYS) відповідно до згаданої вище теми. Якщо ви збираєтеся підключити бібліотеку на основі наявних сирцевих кодів - використання MSYS практично обов'язкове (якщо тільки ви - не любитель "хардкору").

Процес підключення бібліотек буде показаний на базі Eclipse Helios, однак у загальному мало чим відрізнятиметься від Eclipse Juno. У якості прикладу - підключення бібліотеки CppUnit - аналога JUnit для C++.

Етап 2: Компіляція бібліотеки

Цей етап можна пропустити, якщо у вас є готова бібліотека та необхідні для неї файли заголовків.

Прихований текст
2.1. Качаємо свіжу версію сирцевих кодів бібліотеки:
http://s2.postimage.org/48uzgsnw9/1_4.jpg
Скачаний архів розпаковуємо туди, де плануємо зберігати бібліотеку. У даному випадку це:
D:\opt\cppunit

cppunit - це змінена назва каталогу cppunit-1.12.1, що міститься в архіві. Зроблено для зручності.

2.2. Запускаємо MSYS:
http://s2.postimage.org/hn3gz356h/1_5.jpg

Якщо хтось із користувачів ніколи не мав досвіду роботи з Linux, не страшно. Хоча і незвично може бути.

2.3. Переходимо до каталогу, в якому містяться розпаковані сирцеві коди бібліотеки:
http://s14.postimage.org/xphem5fyp/1_6.jpg

2.4. Перебуваючи у каталозі, вводимо команду

./configure

Вона (власне, це - файл у тому каталозі) запустить процес автоматичного створення файлу налаштувань для подальшого збирання бібліотеки.
Запускаємо процес конфігурації та чекаємо...
http://s8.postimage.org/5616rr7bp/1_7.jpg
За хвилинку-другу процес завершиться.
http://s13.postimage.org/d8jbwh5lj/1_8.jpg
Для подальшого збирання бібліотеки запускаємо команду make.
http://s7.postimage.org/wir381p4r/1_9.jpg
Процес компіляції та збирання бібліотеки - найдовша частина усього процесу. У випадку CppUnit це займе на нормальній машині близько 10-15 хв. Аналогічний процес для повної версії Boost розтягнеться на годинку-другу. Але то таке: можна відпочити, поки процес триватиме...

За успішного завершення компіляції у каталозі бібліотеки створяться власне її бінарні файли.
http://s8.postimage.org/spr61yhn8/1_10.jpg
Файл з розширенням .a - статична бібліотека (для Visual Studio це було би .lib), .dll - динамічна. Для зручності роботи ці файли варто скопіювати до каталогу, як вказано на малюнку вище.

Етап 3: Створення проекту та підключення бібліотеки

Прихований текст
3.1. Створюємо новий проект в Eclipse:
http://s13.postimage.org/6emtc0h3r/1_1.jpg

Варто зауважити, що за використання у розробці CppUnit для тестування на практиці створюється окремий проект.

3.2. У створеному проекті відчиняємо віконце "Властивості":
http://s8.postimage.org/n7blhg3is/1_2.jpg

3.3. Для початку задамо середовищу, де шукати бібліотеку:
http://s13.postimage.org/jpowu4srb/1_3.jpg

Вибираємо каталог на диску, до якого нещодавно скопіювали файли скомпільованих бібліотек:
http://s14.postimage.org/kh9al3kls/1_11.jpg

Хоча Eclipse дозволяє запис шляху до файлів у стилі Windows, бажаніше, якщо їх оформлювати у стилі Unix:
http://s9.postimage.org/g96k8w4zz/1_12.jpg
Якщо планується робота над проектом у версіях Debug та Release, ліпше поставити галочку, як на малюнку вище.

3.4. Переходимо до додавання безпосередньо бібліотек:
http://s7.postimage.org/fkoeb7o8r/1_14.jpg

Аналогічним чином знаходимо їх на диску:
http://s9.postimage.org/tp7d3khn2/1_15.jpg

А тут важливо відмітити  два моменти:
1. Оскільки шлях до каталогу бібліотек уже прописаний, його повторення у назві бібліотеки не допускається.
2. Відповідно до вимог GCC (як компонента MinGW), підключення бібліотеки з назвою libMYLIB.a, libMYLIB.dll вимагає вказання лише суто назви, себто MYLIB.
http://s14.postimage.org/5idk4tic1/1_16.jpg

Дане правило справедливе і для динамічної бібліотеки:
http://s2.postimage.org/xcbwel5h5/1_24.jpg

3.5. Для використання бібліотек у програмі варто прописати шлях до файлів-заголовків, які стосуються даної бібліотеки:
http://s7.postimage.org/4pokqbbln/1_17.jpg

Важливо при цьому додати коректно цей каталог: саме include, а не include/cppunit:
http://s9.postimage.org/5jk58ivda/1_18.jpg

І знову підкоригувати шлях:
http://s14.postimage.org/tmdiklfkh/1_19.jpg
Примітка: на малюнку забув вказати галочку "All configurations", але це не дуже принципово.


3.6. Перевірити факт і синтаксис підключення бібліотеки можна так:
http://s9.postimage.org/dxcszwdhr/1_21.jpg

Примітка: під час компіляції файлів коду компілятору передаватимуться параметри шляху до бібліотек та назви самих бібліотек згідно синтаксису:
-Lpath_to_libs
-lmy_own_library

Власне, цим і пояснюється особливість назв бібліотек, вказана у пункті 3.4.

Етап 4: Перевірка на практиці

Прихований текст
4.1. Створюємо у проекті файл коду:
http://s2.postimage.org/cske1ycxk/1_22.jpg

Прописуємо у файлі код для перевірки бібліотеки (зверніть увагу на підключені заголовки: там видно, чому варто було у шляхах вказати include):
http://s9.postimage.org/4z0zbgtou/1_23.jpg

Якщо запуск програми шляхом "Ctrl+F11" видав у результаті

OK (0 tests)

у консолі, то бібліотеку підключено успішно.

I belong to the Dead Generation.