Я пытаюсь собрать пакет nuget с помощью инструмента CoApp для C ++.
Пакет должен включать 3 папки при компиляции cpp с его использованием.
Итак, я хочу, чтобы внутренняя структура включения была следующей:
/build/native/include/lib1,
/build/native/include/lib2,
/build/native/include/lib3
Мой вопрос: как добавить несколько папок include в / build / native / include /
Я попробовал:
Несколько блоков (варьирующихся lib1, lib2, lib3):
nestedInclude +=
{
#destination = ${d_include}lib1;
".\lib1\**\*.hpp", ".\lib1\**\*.h"};
Несколько блоков (варьирующихся lib1, lib2, lib3):
nestedInclude
{
#destination = ${d_include}lib1;
".\lib1\**\*.hpp", ".\lib1\**\*.h"};
но кажется, что coapp накапливает файлы .h / .hpp среди блоков (в зависимости от оператора + = или нет) и в конце добавляет все из них в последний #destination
значение тега. Итак, я получаю уникальную запись: /build/native/include/lib3
Пункт назначения перезаписывается в вашем примере, и поэтому вы получаете все без изменений по последнему указанному адресу. Чтобы справиться с этим, вы можете вместо этого создать несколько вложенных включений,
nested1Include: {
#destination = ${d_include}lib1;
".\lib1\**\*.hpp", ".\lib1\**\*.h"}
nested2Include: {
#destination = ${d_include}lib2;
".\lib2\**\*.hpp", ".\lib2\**\*.h"}
Я только что затронул ту же проблему, и ответ Горгара поставил меня на правильный путь, спасибо. Но у меня есть еще одна дополнительная информация. Я только имел один базовый каталог, и в этом случае CoApp все еще сплющил все. Хитрость заключается в том, чтобы заставить его думать, что у него есть два, даже если его нет, вот так:
include1: {
#destination = ${d_include}NativeLogger;
"include\NativeLogger\*.h"};
// The use of a second include spec here which doesn't actually address any files
// is to force CoApp to create the substructure of the first include. There is some
// discussion on the net about bugginess related to includes structures, but this
// seems to fix it.
include2: { include\* };