Gradle-Visual C ++编译器,vcpkg和外部库

卢克

我在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

卢克

通过向其提供vcpgk安装的mpi标头和库的路径,我能够获得编译我的项目的机会。我将寻找一种使其更灵活的方法。不过,这是我对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 []
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

构建C / C ++代码时的Gradle编译器输出

在Visual C ++ 2010编译器的code :: block中使用小部件库时,发生错误

Windows PE从Visual C ++编译器调试数据库

如何使用Visual c ++编译器为Boost 1.39.0构建库运行Cmake

可能的Visual Studio 2015 C ++编译器和IntelliSense错误

`.NET Compiler Platform SDK` & `C# 和 Visual Basic Roslyn 编译器` 之间的区别

如何获取MatLab来查找Visual C ++编译器?

使用Visual Studio编译器分析内联的C ++函数

CMake找不到Visual C ++编译器

C ++:使用Visual Studio编译器时的const指针

Visual Studio C ++编译器怪异行为

拆解Visual Studio Intel编译器C ++代码

使用Visual C ++编译器在Windows上构建库时,如何正确设置目标OS版本

Visual Studio 2013和2015中的C ++编译器错误C2280“试图引用已删除的函数”

Visual Studio C++ 编译器尝试编译 CUDA C/C++ 文件

代码在 Visual Studio 中不起作用,但在 C++ shell 和 CodeBlock 中工作,编译器问题?

如何使用 Visual Studio 编译器在 Windows 上编译 cython 编译的 c 代码

哪些编译器选项用于在Visual Studio中编译C ++ STL类/函数?

使用g ++编译器在Visual Studio中编译C ++程序会在最后生成%

用MinGW或其他C ++编译器模仿Visual C ++(对于基于Visual C ++的Python包)

跨不同编译器的C ++库

C ++编译器标志忽略外部库的警告,但不包括目录

Visual Studio 2013中可能的C / C ++编译器错误

在C ++程序中使用libcurl会导致Visual C ++编译器发出错误

Visual Studio Code 的 C/C++ 扩展如何找到默认编译器?

使用Google Closure编译器和Gradle缩小JavaScript

C标准库结构在macOS或Linux上的编译器和库版本之间是否兼容?

在 Visual Studio 的 C++ 项目中使用 NetCDF(通过 vcpkg 安装)和 CMake 时无法解析的外部符号

在Visual C ++ 2015中使用64位编译器