Coapp / autopkg :/build/native/include/ 中的多个包含文件夹

Coapp / autopkg : multiple include folders in /build/native/include/

本文关键字:包含 文件夹 include autopkg build native Coapp      更新时间:2023-10-16

我正在尝试通过 CoApp 工具为 c++ 构建一个 nuget 包。该包在使用编译 cpp 时需要嵌入 3 个文件夹。

所以,我想要一个内部包含结构如下:

/build/native/include/lib1, /build/native/include/lib2, /build/native/include/lib3

我的问题:如何在/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"
   }

我刚刚遇到了同样的问题,Gorgar的回答让我走上了正确的轨道,谢谢。但我确实还有一条额外的信息。我只有一个底层目录,在这种情况下,CoApp 仍然扁平化了所有内容。诀窍是让它认为它有两个,即使它没有,就像这样:

    include1: {
        #destination = ${d_include}NativeLogger;
         "includeNativeLogger*.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* };