Gradle Pilot include file directories through the srcDir srcFile directive

Does anyone know how srcDir inclusions work in experimental gradle files (cpp & h)? This is a kind of "triple" question:

1 °) how does srcDir work?

1.a °) Does it recursively include all subdirs? Does it only include files at its deepest level? Does it include all cpp / c / cc / cxx files?

for example this command:

android.sources {
    main {
        jni {
            source {
                srcDir "../../../../some/path/src"
            }
        }
    }
}

Does it include all cpp files in src? all files under src? are all cpp files recursively in subdirs? all files recursively in subdirs?

Google documentation is very vague:

http://tools.android.com/tech-docs/new-build-system/gradle-experimental

and gradle is also not clear:

https://docs.gradle.org/current/userguide/nativeBinaries.html

Does it say that it only includes src / $ {name} / cpp? what does it mean? Should I create

 ../../../../some/path/src/cpp 

?

1.b °) :

android.sources {
    main {
        jni {
            exportedHeaders {
                srcDir "../../../../some/path/src"
            }
        }
    }
}

, srcDir, , , srcDir ( )

2 °) , dir?

android.sources {
    main {
        jni {
            source {
                srcDir "../../../../some/path/src"
                srcFile "../../../../some/path/src/myFile.cpp" 
            }
        }
    }
}

,

3 °), include/exclude?

include/exclude, srcDir? "source"?

:

 android.sources {
        main {
            jni {
                source {
                    srcDir "../../../../some/path/src"
                    include "*.cpp"
                }
            }
        }
    }

, cpp. , cpp cpp src, , .

, gradle 2.9, gradle -experimental-0.6.0-alpha3.

+4
2

. ( - ), , :

public Set<File> getSrcDirs() {
    Set<File> dirs = new LinkedHashSet<File>();
    for (DirectoryTree tree : getSrcDirTrees()) {
        dirs.add(tree.getDir());
    }
    return dirs;
}

DefaultSourceDirectorySet.java.

gradle -erperimate cpp c:

            languageSourceSets.create(
                    sourceSetName + "Cpp",
                    CppSourceSet.class,
                    new Action<CppSourceSet>() {
                        @Override
                        public void execute(CppSourceSet source) {
                            source.getSource().setSrcDirs(jni.getSource().getSrcDirs());
                            source.getSource().include("**/*.C");
                            source.getSource().include("**/*.CPP");
                            source.getSource().include("**/*.c++");
                            source.getSource().include("**/*.cc");
                            source.getSource().include("**/*.cp");
                            source.getSource().include("**/*.cpp");
                            source.getSource().include("**/*.cxx");
                            source.getSource().exclude(jni.getSource().getExcludes());
                            source.exportedHeaders(new Action<SourceDirectorySet>() {
                                @Override
                                public void execute(SourceDirectorySet files) {
                                    files.source(jni.getExportedHeaders());
                                }
                            });
                            configurePrebuiltDependency(source, jni);
                        }
                    });

NdkConfiguration.java.

, ,   source.getSource() ( "**/* ." );.

:

            for (LanguageSourceSet sourceSet : nativeBinary.getSources()) {
                if (sourceSet instanceof HeaderExportingSourceSet) {
                    HeaderExportingSourceSet source = (HeaderExportingSourceSet) sourceSet;
                    artifact.getExportedHeaderDirectories().addAll(
                            source.getExportedHeaders().getSrcDirs());
                }
            }

NdkComponentModelPlugin.java. getSrcDirs gradle, dir

EDIT: :

1 °) a °) srcDir , :   *.C, *.CPP, *.++, *.cc, *.cp, *.cpp, *.cxx

b °) includeHeaders ( , : #include "test.h" # "dir1/dir2/dir3/test.h"

2 °), , - , , , . . , , ( ).

3 °) include

+4

v. 0.4.0 srcDirs , exclude . include srcFile.

android.sources {
    main {
       jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}

. fooobar.com/questions/22941/...

0.6.0 exportedHeder, , , gradle Android.

+3

Source: https://habr.com/ru/post/1620140/


All Articles