Embarcadero C ++ Builder: переходные зависимости проекта и включает в себя?

Допустим, у меня есть такие зависимости проекта:

  • SerialPortDemo (EXE) -> SerialPort (DLL) -> ByteIo (DLL).
  • XYZ-App (EXE) -> XYZ-Lib (DLL) -> ByteIo (DLL)

Каждый проект DLL имеет две папки, include а также src, include содержит заголовок (и) открытого интерфейса и src/ реализация наряду с непубличными заголовками.

Используется для CMake target_include_directories с его ключевыми словами PUBLIC, PRIVATE и INTERFACE я бы хотел сообщить проекту ByteIo, нужно ли и какой каталог его потребители добавлять в свой список включаемых каталогов, чтобы использовать проект ByteIo. То же самое относится и к связанным библиотекам — опять же, как target_link_libraries в CMake.

Прямо сейчас я вынужден вручную добавить директорию включения ByteIo в каждый проект, прямо или косвенно, в зависимости от заголовков ByteIo. Например, класс SerialPort в подклассах проекта SerialPort.dll ByteIo, определенный в проекте ByteIo.ddl, и поэтому в проекте SerialPortDemo.exe необходимо добавить (общедоступные) пути включения обоих проектов, ByteIo и SerialPort.
Даже для крошечного примера выше (SerialPortDemo, SerialPort, XYZ-App и XYZ-Lib) это огромная трата времени и очень подвержена ошибкам.

Не работает:

  • Наборы опций: слишком ограничен для использования, так как относительный путь включения должен изменяться в соответствии с расположением потребительского проекта DLL-проекта. Единственный обходной путь, который я смог найти, — это добавить полные пути в список включаемых путей в наборе параметров, что недопустимо.
  • Переменные среды: не приемлемое решение, так как оно вынуждает меня проверять проекты в очень конкретном месте и / или лишает меня возможности проверять проект несколько раз на одном компьютере.

Предлагает ли Embarcadero C ++ Builder XE8 разумное и понятное решение этой проблемы?

0

Решение

Прямо сейчас я вынужден вручную добавить директорию включения ByteIo в каждый проект, прямо или косвенно, в зависимости от ByteIo.

Вам нужно только добавить его для проектов, которые непосредственно зависит от ByteIo (SerialPort и XYZ-Lib). У других проектов (SerialPortDemo и XYZ-App) нет никаких оснований вообще ссылаться на ByteIo.

Embarcadero C ++ Builder XE8 предлагает решение проблемы?

Одна вещь, которая приходит на ум, это создать Набор опций содержит общие настройки, например путь к папкам ByteIo, и сохраните его в .optset файл. Затем вы можете применить этот набор параметров для каждого проекта по мере необходимости. Вы можете импортировать .optset файл непосредственно в проект, перезаписывая его текущую конфигурацию. Или вы можете создать ссылку на .optset файл, так что несколько проектов могут поделиться им.

Если это не работает, вы всегда можете создать Переменная среды он указывает на папку включения ByteIO, а затем добавляет эту переменную в путь включений каждого проекта.

0

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector