Организация ссылок на внешние библиотеки в C ++ - PullRequest
0 голосов
/ 24 мая 2010

В кроссплатформенном (Windows, FreeBSD) проекте C ++, над которым я работаю, я использую две внешние библиотеки, Protocol Buffers и ZeroMQ . В обоих проектах я отслеживаю последнюю ветку разработки, поэтому эти библиотеки часто перекомпилируются / заменяются.

Для сценария разработки, где лучше всего хранить libprotobuf.{a,lib} и zeromq.{so,dll}? Должен ли мой сценарий сборки скопировать их из соответствующих каталогов проекта в каталог моего локального проекта (скажем, MyProjectRoot/lib или MyProjectRoot/bin) до того, как я соберу свой проект? Кажется, это предпочтительнее, чем класть вещи в /usr/local/lib, так как я бы не хотел заменять общесистемную стабильную версию последней экспериментальной.

Cmake предупреждает меня всякий раз, когда я указываю относительный путь для связи, поэтому я подозреваю, что копирование является лучшим решением, чем относительное связывание? Это лучший подход?

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 24 мая 2010

Я бы посоветовал вам не копировать файлы в дереве исходных кодов, и определенно не в системную папку, а вместо этого перейти к определенному целевому местоположению -

  • $ BUILD_TARGET / bin - конечное двоичное назначение (.exe / .so / .dll и т. Д.)
  • $ BUILD_TARGET / obj - назначение файла объекта (.obj и т. Д.)
  • $ BUILD_TARGET / lib - назначение статической библиотеки (.lib и т. Д.)

Вы можете усовершенствовать это, используя цели оптимизации / отладки -

DEBUG

  • $ BUILD_TARGET / binD - конечное двоичное назначение (.exe / .so / .dll и т. Д.)
  • $ BUILD_TARGET / objD - назначение файла объекта (.obj и т. Д.)
  • $ BUILD_TARGET / libD - назначение статической библиотеки (.lib и т. Д.)

РЕЛИЗ (ОПТИМИЗИРОВАННЫЙ)

  • $ BUILD_TARGET / binO - конечное двоичное назначение (.exe / .so / .dll и т. Д.)
  • $ BUILD_TARGET / objO - назначение файла объекта (.obj и т. Д.)
  • $ BUILD_TARGET / libO - назначение статической библиотеки (.lib и т. Д.)

Возможности безграничны, x86 / x64 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...