Библиотеки только для заголовков с scons

#c #scons

Вопрос:

Я новичок в scons, так что, возможно, мой google-fu действительно плох, но я не смог найти способ создать библиотеку C только для заголовков. Я знаю, что могу использовать CPPPATH для размещения каталогов в пути включения, но это не идеально. Моя библиотека libonlyheader зависит от других внешних библиотек, таких как fmt и boost , и я хочу, чтобы исполняемые файлы и библиотеки, созданные с их помощью fmt boost , также переходно зависели от и. По сути, я ищу функцию, подобную библиотекам cmake INTERFACE .

Комментарии:

1. Что плохого в использовании CPPATH для этого? Возможно, это помогло бы направить вас, если бы мы знали о проблеме.

2. Поэтому, если размещение заголовков в пути включения — это единственное, что требуется для использования пути CPP библиотеки, это нормально. Очевидная проблема возникает, когда библиотека заголовков зависит от библиотек без заголовков. Более серьезная проблема (с точки зрения новичка) возникает, когда у нас есть две библиотеки заголовков liba , и libb обе они содержат файл header.h . Что делать, если в одной и той же среде scons мы хотим, чтобы некоторые цели использовались, liba а некоторые libb -нет ? Если я не упускаю что-то из того, как работает scons, отсутствие библиотеки, представленной как библиотека, может вызвать серьезные головные боли.

3. Ваша коллекция заголовочных файлов не является «библиотекой» в обычном смысле этого слова. Библиотека создает a .a или a .so (or.dll), Это скорее пакет, чем библиотека. Если вам нужно включить библиотеку при использовании пакета, вам нужно будет добавить ее в библиотеки, где это уместно. Вы можете добавить метод AddPackageXYZ, который добавляет путь включения и библиотеки в вашу рабочую среду()…