添加本机静态依赖项

时间:2015-01-27 18:30:58

标签: c++ gradle native dependency-management build.gradle

在C ++ Gradle项目中,我使用boost 1.49库。

如何将此库添加为项目的依赖项。

我尝试这种方式,但我应该将boost定义为依赖。有一个C ++库存储库吗?

apply plugin: 'cpp'

libraries {
    hello {
        baseName 'hello'
    }
}

sources {
    hello{
        cpp {
            source.srcDirs = ['src']
            lib library: 'boost', linkage: 'api' 
            exportedHeaders.srcDirs = ['include']
        }
    }
}

1 个答案:

答案 0 :(得分:1)

c / cpp编程不是域而是(与gradle相反;))但是当你导航到$GRADLE_HOME/samples/native-binaries时,你可以在那里找到很多有用的例子。

其中一个 - cunit (哦,还有另一个:多项目)有这样的配置 - 它可能对你有用。下面我附上 cunit 中的build.gradle - 以防您使用gradle包装。

apply plugin: "c"
apply plugin: "cunit"

model {
    flavors {
        passing
        failing
    }
    repositories {
        libs(PrebuiltLibraries) {
            cunit {
                headers.srcDir "lib/cunit/2.1-2/include"
                binaries.withType(StaticLibraryBinary) {
                    staticLibraryFile =
                        file("lib/cunit/2.1-2/lib/" +
                             findCUnitLibForPlatform(targetPlatform))
                }
            }
        }
    }
}

libraries {
    operators {}
}
binaries.withType(CUnitTestSuiteBinarySpec) {
    lib library: "cunit", linkage: "static"

    if (flavor == flavors.failing) {
        cCompiler.define "PLUS_BROKEN"
    }
}

def findCUnitLibForPlatform(Platform platform) {
    if (platform.operatingSystem.windows) {
        return "vs2010/cunit.lib"
//        return "vs2013/cunit.lib"
//        return "cygwin/cunit.lib"
//        return "mingw/cunit.lib"
    } else if (platform.operatingSystem.macOsX) {
        return "osx/libcunit.a"
    } else {
        return "linux/libcunit.a"
    }
}

快速的Google搜索显示,没有像c / cpp项目的库存储库这样的东西。似乎图书馆应该包含在项目来源中。