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

问题描述 投票:0回答:2

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

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

我采取的步骤是:

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

  2. 使用 git for windows 中的 GIT BASH 来拉取存储库 https://github.com/OSGeo/GDAL.git 并将其定位到 c:/gdal

  3. 在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

  4. 还拉取了存储库:https://github.com/OSGeo/PROJ.git位于c:/proj/PROJ

  5. 使用 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>
  1. 打开 Visual Studio 2019,打开项目或解决方案,选择 C:\gdal\gdal\gdal_vs2019.vcxproj,确保解决方案平台下拉列表设置为 x64,构建 -> 构建解决方案,这会返回三个错误:
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?

c++ build visual-studio-2019 gdal
2个回答
1
投票

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

您也可以尝试清洁:

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

最后,您可以尝试在不同的计算机上进行构建。


1
投票

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

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

在 Windows 上安装 PROJ 最简单的方法是使用

OSGeo4W
_ 软件分发。 OSGeo4W 可以轻松访问许多流行的 开源地理空间软件包。安装后您可以 使用 OSGeo4W shell 中的 PROJ。要安装 PROJ,请执行以下操作:

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

  1. 下载
    32 bit
    64 bit
    安装程序。
  2. 运行 OSGeo4W 安装程序。
  3. 选择“高级安装”并按下一步。
  4. 选择“从互联网安装”并按下一步。
  5. 选择安装目录。在大多数情况下,默认建议就可以了。按下一步。
  6. 选择“本地包目录”。在大多数情况下,默认建议就可以了。按下一步。
  7. 选择“直接连接”并按下一步。
  8. 选择 download.osgeo.org 服务器并按下一步。
  9. 在“Commandline_Utilities”下找到“proj”,然后单击“New”栏中的包,直到出现您要安装的版本。
  10. 按下一步安装 PROJ。

我从 osgeo4W 下载了安装程序。因为我需要 32 位和 64 位版本,所以我下载了

osgeo4w-setup-x86-v1.exe
osgeo4w-setup-x86_64-v1.exe
。从 osgeo 下载大的 proj 文件时,下载在 25% 后卡住了,所以我选择了 oslandia 下载链接。这最初会失败(至少对我来说),但重新启动后它可能会完成。

在下载包选择中单击“跳过”徽标以选择二进制文件(“B”)和源文件(“S”)。我选择了两者。我下载了“proj”、“proj-dev”和“proj-dev-data”,不确定实际需要什么。当它要求包含依赖项(很多)时,我选择包含它们。

在 nmake.opt (你的步骤 3)中,我用于 32 位:

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。

© www.soinside.com 2019 - 2024. All rights reserved.