1

我在 vcpkg 旁边安装了 Visual Studio 2019。我已经安装了一个外部依赖项(使用 msmpi vcpkg install msmpi:x86-windows)并尝试使用 Visual Studio IDE 创建示例 MPI 项目:一切正常,无需额外配置,令人印象深刻。

现在 - 由于我正在处理的项目的性质,我想使用 gradle 来编译我的代码(在 Visual Studio 之外)。为了实现这一点,我使用了 Gradle 的 cpp-application 插件,并带有以下 build.gradle:

plugins {
    id 'cpp-application'
}

简单的“Hello world”的编译工作:gradle 找到 Visual C++ 编译器,执行它,一切顺利(顺便说一句,我也印象深刻)。

mpi.h当我将外部库 ( ) 中的标头包含到我的代码中时,问题就出现了。当使用 gradle 和 cpp-application 插件进行编译时,使用 vcpkg 预先安装的依赖项似乎不可见(当我使用 Visual Studio IDE 编译代码时,一切都在没有任何额外配置的情况下工作)。如何解决问题,最好不要将库和标题硬编码到我的build.gradle?

4

1 回答 1

1

通过为项目提供 vcpgk 安装的 mpi 头文件和库的路径,我能够获得 gradle 来编译我的项目。我将寻找一种使其更灵活的方法。不过,这是我对以下内容的补充build.gradle

ext {
    vcpgkIncludePath = 'path-to-include'
    vcpkgLibPath = 'path-to-vcpkg-libs'
}
tasks.withType(CppCompile).configureEach {
    compilerArgs.addAll toolChain.map { toolChain ->
        if (toolChain in VisualCpp) {
            return ["/I$vcpgkIncludePath"]
        }
        return []
    }
}

tasks.withType(org.gradle.nativeplatform.tasks.LinkExecutable).configureEach {
    linkerArgs.addAll toolChain.map { toolChain ->
        if (toolChain in VisualCpp) {
            return ["/LIBPATH:$vcpkgLibPath", "msmpi.lib"]
        }
        return []
    }
}
于 2019-08-05T21:08:16.187 回答