尝试在 Windows 10 x64 上使用 Visual Studio 2019 v16.6.5 从 github 构建 GDAL

Posted

技术标签:

【中文标题】尝试在 Windows 10 x64 上使用 Visual Studio 2019 v16.6.5 从 github 构建 GDAL【英文标题】:Trying to build GDAL from github using Visual Studio 2019 v16.6.5 on Windows 10 x64 【发布时间】:2020-07-31 11:15:41 【问题描述】:

我想使用 Visual Studio 2019 来构建 GDAL。但是我在尝试构建时不断收到错误。

我使用的电脑是 Acer Aspire f 15 F5573G-72CP, CPU 为 i7 7500U 2.7GHz,RAM 为 16GB,操作系统为 Windows 10 64 位

我采取的步骤是:

    下载 Visual Studio 社区,包括 .NET 桌面开发、通用 Windows 平台开发、使用 C++ 和 Node.js 开发的桌面开发。

    使用来自 git for windows 的 GIT BASH 来提取 repo https://github.com/OSGeo/GDAL.git 并将其定位到 c:/gdal

    在 c:/gdal/GDAL/nmake.opt:

    3.a.将第 42 行更改为 Line 42: MSVC_VER=1926

    3.b。我取消了第 260 行的注释:

    Line 259: # PROJ stuff (required dependency: PROJ >= 6)

    Line 260: PROJ_INCLUDE = -Id:\install-proj\local\include

    3.c。未注释第 213 行:Line 213: WIN64=YES

    还提取了 repo:https://github.com/OSGeo/PROJ.git 位于 c:/proj/PROJ

    使用 Windows Powershell,cd c:/gdal/gdal -> generate_vcxproj.bat 16.0 64 gdal_vs2019 输出如下:

PS C:\gdal\gdal> .\generate_vcxproj.bat 16.0 64 gdal_vs2019
The system cannot find the path specified.
Generating:
  "C:\gdal\gdal\gdal_vs2019.vcxproj"
  "C:\gdal\gdal\gdal_vs2019.vcxproj.user"
  "C:\gdal\gdal\gdal_vs2019.vcxproj.filters"
  "C:\gdal\autotest\cpp\gdal_vs2019_test.vcxproj"
  "C:\gdal\autotest\cpp\gdal_vs2019_test.vcxproj.user"
  "C:\gdal\autotest\cpp\gdal_vs2019_test.vcxproj.filters"
This might take a little while...
Projects done!
Launch Visual Studio IDE
* Open project "C:\gdal\gdal\gdal_vs2019.vcxproj"
* Add  project "C:\gdal\autotest\cpp\gdal_vs2019_test.vcxproj"
* Configure Build Dependencies to build the main project before the test project.
* Save solution in .sln file
Done!
PS C:\gdal\gdal>
    打开Visual Studio 2019,打开一个项目或解决方案,选择C:\gdal\gdal\gdal_vs2019.vcxproj,确保Solution Platforms下拉菜单设置为x64,Build->Build Solution,返回三个错误:
Severity    Code    Description Project File    Line    Suppression State
Error   U1077   'call' : return code '0x1'  gdal_vs2019 C:\gdal\gdal\NMAKE  1   

Severity    Code    Description Project File    Line    Suppression State
Error   U1077   '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\nmake.EXE"' : return code '0x2'   gdal_vs2019 C:\gdal\gdal\NMAKE  1   

Severity    Code    Description Project File    Line    Suppression State
Error   MSB3073 The command "chcp 65001 >NUL && nmake -f makefile.vc MSVC_VER=1926 WIN64=1 DEBUG=1 WITH_PDB=1" exited with code 2.  gdal_vs2019 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets  46  


输出选项卡显示:

1>------ Build started: Project: gdal_vs2019, Configuration: Debug x64 ------
1>
1>Microsoft (R) Program Maintenance Utility Version 14.26.28806.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>
1>  cd port
1>  nmake /nologo /f makefile.vc
1>  call prev_dllbuild.bat
1>The system cannot find the path specified.
1>
1>C:\gdal\gdal\port>IF NOT EXIST dllbuild.prev (ECHO 1 ) 1>dllbuild.prev
1>
1>C:\gdal\gdal\port>SET /P PREV_DLLBUILD= 0<dllbuild.prev
1>
1>C:\gdal\gdal\port>IF NOT "1" == "1" (ECHO 1 ) 1>dllbuild.prev
1>NMAKE : fatal error U1077: 'call' : return code '0x1'
1>Stop.
1>NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\nmake.EXE"' : return code '0x2'
1>Stop.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command "chcp 65001 >NUL && nmake -f makefile.vc MSVC_VER=1926 WIN64=1 DEBUG=1 WITH_PDB=1" exited with code 2.
1>Done building project "gdal_vs2019.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我应该如何解决这些错误以成功构建 GDAL?

【问题讨论】:

你有幸构建了那个 gdal 版本吗?我自己做不到... 不走运。我最终玩了 Anaconda 并以这种方式开始使用 GDAL。见gis.stackexchange.com/a/381491/66545 【参考方案1】:

这有点晚了,但是您是否尝试过以下方法:

阅读https://trac.osgeo.org/gdal/wiki/BuildingOnWindows 阅读https://trac.osgeo.org/gdal/wiki/BuildHints了解具体情况 需求/依赖项/驱动因素 获取所需的所有依赖项 编辑 nmake.opt 以禁用/启用您不使用的功能/驱动程序 需要 运行 NMAKE

您也可以尝试清洁:

nmake /f makefile.vc clean
nmake /f makefile.vc

最后,您可以尝试在另一台计算机上构建。

【讨论】:

【参考方案2】:

听着,这就是提问的方式:清晰、准确的步骤、详细的描述。很有帮助!

我可以在不使用 GIT 存储库时进行编译。相反,我按照他们的 Windows 安装文档下载了 PROJ:

在 Windows 上安装 PROJ 的最简单方法是使用 OSGeo4W_ 软件分发。 OSGeo4W 可以轻松访问许多流行的 开源地理空间软件包。安装后可以 使用 OSGeo4W shell 中的 PROJ。要安装 PROJ,请执行以下操作:

注意:: 如果您已经通过 OSGeo4W 在您的计算机上安装了软件,或者如果 您已经在计算机上安装了 QGIS,PROJ 很可能是 已安装。在开始菜单中输入“OSGeo4W Shell”并检查是否 这给出了一个匹配。

    下载32 bit64 bit 安装程序。 运行 OSGeo4W 安装程序。 选择“高级安装”并按下一步。 选择“从 Internet 安装”并按下一步。 选择安装目录。在大多数情况下,默认建议很好。按下一步。 选择“本地包目录”。在大多数情况下,默认建议很好。按下一步。 选择“直接连接”并按下一步。 选择 download.osgeo.org 服务器并按下一步。 在“Commandline_Utilities”下找到“proj”,点击“New”栏中的包,直到出现要安装的版本。 按下一步安装 PROJ。

我从osgeo4W 下载了安装程序。因为我需要 32 位和 64 位版本,所以我下载了 osgeo4w-setup-x86-v1.exe 和 osgeo4w-setup-x86_64-v1.exe。从 osgeo 下载大项目文件时,下载在 25% 后卡住了,所以我选择了 oslandia 下载链接。这最初会失败(至少对我而言),但重新启动后它可能会完成。

在下载包选择中点击“Skip”标志选择二进制(“B”)和源(“S”)。我两个都选了。我下载了“proj”、“proj-dev”和“proj-dev-data”,不确定实际需要什么。当它要求包含依赖项(很多)时,我选择包含它们。

在我用于 32 位的 nmake.opt(您的第 3 步)中:

PROJ_INCLUDE = -IC:\OSGeo4W\include
PROJ_LIBRARY = C:\OSGeo4W\lib\proj.lib

对于 64 位:

PROJ_INCLUDE = -IC:\OSGeo4W64\include
PROJ_LIBRARY = C:\OSGeo4W64\lib\proj.lib

为了运行 generate_vcxproj.bat,我使用了 Visual Studio 2022 x86 和 x64 本机工具命令提示符。在我更改的 bat 文件中:

if "%_vcver_%"=="16.0" (
    set _clver_=1926
    set _vstoolset_=v143

在nmake.opt中:

MSVC_VER=1929

我分别为 64 位和 32 位运行 bat:

generate_vcxproj.bat 16.0 64 gdal_vs2022
generate_vcxproj.bat 16.0 32 gdal_vs2022_x86

在这一步之后,我可以在 Visual Studio 中打开 vcxproj 文件并编译库。我在我的项目中使用了生成的 gdal_i.lib 和随附的 gdal303.dll。

【讨论】:

以上是关于尝试在 Windows 10 x64 上使用 Visual Studio 2019 v16.6.5 从 github 构建 GDAL的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 7 x64 PC 上安装 node.js 的回滚

在 Windows 7 x64 上检测 DVD-RAM 介质是不是为空

Windows 10 中的 XAMPP x64 和 Imagick 不起作用

如何在 Win x64 上使用 WinAPI 正确安装虚拟打印机?

在 Windows 10 x64 上安装 MonetDB ODBC

无法在我的 Windows 10 x64 机器上安装 scrapy