Как создать отдельную библиотеку для включения в C++/Eclipse

Я получил немного кода C++ для работы с анализатором TinyXML. Однако для этого мне пришлось включить исходный код из TinyXML в свой обычный исходный код. Я хотел бы включить TinyXML в качестве отдельной библиотеки. Я использую Eclipse с компилятором Cygwin C++. Какой хороший способ сделать это?

2 ответа

Решение

Я предполагаю, что вы хотите отделить библиотеку от исходного кода вашего собственного проекта... но вы не знаете, как создать библиотеку, если она не находится в той же папке.


Предполагая, что ваша библиотека имеет предварительно скомпилированные файлы *.lib и *.h:

  1. Переместить исходный код библиотеки в отдельный каталог
  2. Менубар "Проект"
  3. Меню "Свойства" откроет диалоговое окно для всех свойств проекта, слева будет список.
  4. Элемент списка "C/C++ Build" изменит графический интерфейс и покажет вам все параметры компилятора / компоновщика / ассемблера gcc (я никогда не делаю ассемблер... поэтому я ничего не делаю с ассемблером). [1]
  5. GCC C Compiler -> Каталоги:
  6. Зеленый значок плюса [2] -> Укажите путь к вашим *.h файлам
  7. Теперь ваш компилятор должен быть доволен (но вы не сможете связать, потому что компоновщик не знает, каковы фактические определения каждой функции)
  8. GCC C Linker -> Библиотеки:
  9. Путь поиска в библиотеке (-L) -> Зеленый значок плюс -> Укажите путь к вашим *.lib файлам
  10. Библиотеки (-l) -> Зеленый значок плюс -> Укажите имя каждой библиотеки, которую вы используете
  11. Ваш компоновщик должен быть счастлив, и ваш код должен скомпилироваться

[Сноска - 1] Панель сборки GUI C/C++ - это оболочка для компилятора / компоновщика командной строки gcc... она просто упрощает использование, потому что она показывает все визуально.

[Сноска - 2] Значок "+" - это то, что сообщит компилятору, где находятся ваши библиотеки *.h, включающие файлы. Компилятору нужны файлы *.h, чтобы знать, какие прототипы функций есть в вашей библиотеке до ее компиляции.


Предполагая, что у вас есть фактические (не скомпилированные) *.c и *.h:

  1. Проделайте те же шаги, что и выше, за исключением шага 7.
  2. На шаге 7. вам нужно убедиться, что файлы библиотеки *.c видны в Eclipse "управляемого make". Если он не видит исходный код, вам нужно указать, где находится источник, чтобы он скомпилировал его.

Это в принципе легко. Вы компилируете свой исходный код для библиотеки и создаете библиотеку с помощью ar (1). Да, удивительно, библиотека - это просто архив; UNIX это круто.

Затем вы можете включить код в качестве статической библиотеки при создании окончательного кода.

Я не очень много использую Eclipse, поэтому не могу рассказать вам точный процесс в IDE, но я считаю, что вам нужно создать отдельный проект для его создания.

Теперь, если вам нужно создать DLL, вам нужно использовать некоторые специальные флаги. Здесь есть хорошая страница.

Другие вопросы по тегам