norisknofun
norisknofun

Reputation: 879

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

I am trying to build a nuget package via CoApp tool for c++. The package needs to embed 3 folders when compiling a cpp using it.

So, I want an internal include structure as following :

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

My question: how to add several include folders in /build/native/include/

I tryied :

Multiple blocs of (varying lib1, lib2, lib3):

    nestedInclude += 
    { 
        #destination = ${d_include}lib1; 
        ".\lib1\**\*.hpp", ".\lib1\**\*.h"
    };

Multiple blocs of (varying lib1, lib2, lib3):

    nestedInclude 
    { 
        #destination = ${d_include}lib1; 
        ".\lib1\**\*.hpp", ".\lib1\**\*.h"
    };

but it seems coapp accumulates the .h/.hpp files among the blocs (depending of operator += or not) and at the end, add all of them to the last #destination tag value. So I get an unique entry : /build/native/include/lib3

Upvotes: 3

Views: 1045

Answers (2)

AnEnglishmanInNorway
AnEnglishmanInNorway

Reputation: 105

I've just hit the same issue, and Gorgar's answer set me on the right track, thank you. But I do have one additional piece of information. I only had one underlying directory, and in that case CoApp still flattened everything. The trick is to make it think it has two, even if it doesn't, like this:

    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\* };

Upvotes: 0

Gorgar
Gorgar

Reputation: 51

The destination is overwritten in your example and therefore you get everything flat in the last given address. To handle this you can instead create multiple nested include,

   nested1Include: { 
        #destination = ${d_include}lib1; 
        ".\lib1\**\*.hpp", ".\lib1\**\*.h"
   }

   nested2Include: { 
            #destination = ${d_include}lib2; 
            ".\lib2\**\*.hpp", ".\lib2\**\*.h"
   }

Upvotes: 5

Related Questions