c++ - 添加原生静态依赖

标签 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']
        }
    }
}

最佳答案

c/cpp 编程不仅是域(与 gradle 对比 ;)),但是当您导航到 $GRADLE_HOME/samples/native-binaries 时,您可以在那里找到很多有用的示例。

其中一个 - cunit(哦,还有另一个:multi-project)有这样的配置 - 它可能对你有用。下面我附上了 cunitbuild.gradle - 以防您使用 gradle wrapper。

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"
    }
}

快速谷歌搜索表明,没有像用于 c/cpp 项目的库存储库这样的东西。看来这些库应该包含在项目源中。

关于c++ - 添加原生静态依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28177518/

相关文章:

gradle - Micronaut @Scheduled 作业未运行

java.lang.NoClassDefFoundError : org/apache/kafka/clients/producer/Producer

java - 是否可以找到 Java native 方法的源代码?

cordova - 它可以用于构建桌面应用程序(linux、OSX、Win)吗?

c++ - 奇怪的自发运行崩溃

c++ - initializer_list 和模板类型推导

c++ - 打开我的应用程序时如何使背景模糊?

c++ - 如何将 double 舍入到 n 位小数?

maven - gradle Maven插件-如何自定义Maven上传的文件名称

android - 带 NFC 的 Android 是否支持卡仿真?