Eclipse работает с несколькими проектами

У меня есть два проекта, написанные на C ++. Предположим, что проекты названы первым и вторым, первый из которых является базовым, у второго проекта есть надстройки для первого, поэтому, когда я собираю и устанавливаю второй проект, он просто добавляет функциональность первого.

Я создал два отдельных проекта Makefile ‘first’ и ‘second’, и я могу построить оба из них по отдельности.

Моя проблема в том, что я не могу связать двоичные файлы, сгенерированные в ‘first’, как базовые двоичные файлы для ‘second’. Я попытался найти похожие вопросы по stackoverflow, но у меня не было представления о том, как связать двоичные файлы, сгенерированные с первого по второй, любая помощь будет принята с благодарностью.

Дайте мне знать, если мне нужно пересмотреть мой вопрос.

1

Решение

Если вы используете GCC, и прочитайте ссылка на параметры компоновщика вы заметите варианты для связи с внешними библиотеками:

  • -L<directory>

    Эта опция говорит компоновщику добавить <directory> к пути поиска библиотеки. Другими словами, он сообщает компоновщику, где искать файлы библиотеки.

  • -l<name-of-lib>

    Эта опция говорит компоновщику связываться с библиотекой. Библиотеки в средах POSIX (Linux, OSX, Windows, использующие Cygwin или MinGW) названы как libname-of-lib.a, но с -l вариант, вам не нужно использовать lib префикс или .a расширение. Также обратите внимание, что в опции -l, то есть маленькая буква L (не заглавная i или цифра 1).

Подводя итог: Чтобы связать с библиотекой из другого каталога, вы ссылаетесь следующим образом:

$ gcc <other flags> <object files> -o <executable> -L<directory> -l<library>

В вашем случае вы должны для -L Опция указать каталог, где библиотека для project1 есть и для -l вариант вы передаете базовое имя библиотеки.


Если с другой стороны, вы не включаете project1 в библиотеку, и хотите связать ее с объектными файлами напрямую, это тоже хорошо:

$ gcc <flags> <object files of project1> <object files of project2> -o <executable>

Конечно, объектные файлы могут быть полными или относительными путями. Например, если у вас есть следующая структура каталогов:

/
`- дом
`- пользователь
`- мой проект
| - проект1
`- project2

Тогда, если вы находитесь в project2 каталог, к которому вы можете получить доступ к объектным файлам project1 лайк

../project1/objectfile.o

Все это, конечно, может быть помещено в Makefile.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]