Допустим, у меня есть такие зависимости проекта:
Каждый проект 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) это огромная трата времени и очень подвержена ошибкам.
Не работает:
Предлагает ли Embarcadero C ++ Builder XE8 разумное и понятное решение этой проблемы?
Прямо сейчас я вынужден вручную добавить директорию включения ByteIo в каждый проект, прямо или косвенно, в зависимости от ByteIo.
Вам нужно только добавить его для проектов, которые непосредственно зависит от ByteIo (SerialPort и XYZ-Lib). У других проектов (SerialPortDemo и XYZ-App) нет никаких оснований вообще ссылаться на ByteIo.
Embarcadero C ++ Builder XE8 предлагает решение проблемы?
Одна вещь, которая приходит на ум, это создать Набор опций содержит общие настройки, например путь к папкам ByteIo, и сохраните его в .optset
файл. Затем вы можете применить этот набор параметров для каждого проекта по мере необходимости. Вы можете импортировать .optset
файл непосредственно в проект, перезаписывая его текущую конфигурацию. Или вы можете создать ссылку на .optset
файл, так что несколько проектов могут поделиться им.
Если это не работает, вы всегда можете создать Переменная среды он указывает на папку включения ByteIO, а затем добавляет эту переменную в путь включений каждого проекта.