Visual studio 2015 如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?

Visual studio 2015 如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?,visual-studio-2015,build,cmake,64-bit,openexr,Visual Studio 2015,Build,Cmake,64 Bit,Openexr,我正在使用CMake 3.7.1。我想使用Visual Studio 2015 x64构建2.2。发布版本包含详细的构建说明: 启动一个命令窗口,使用CMakeLists.txt导航到IlmBase文件夹,然后键入command:setlocal del/f CMakeCache.txt 克马克 -DCMAKE\u安装\u前缀= -G“Visual Studio 10 Win64” ..\ilmbase 导航到Windows资源管理器中的IlmBase文件夹,打开IlmBase.sln并生成解决

我正在使用CMake 3.7.1。我想使用Visual Studio 2015 x64构建2.2。发布版本包含详细的构建说明:

  • 启动一个命令窗口,使用CMakeLists.txt导航到IlmBase文件夹,然后键入command:setlocal del/f CMakeCache.txt 克马克 -DCMAKE\u安装\u前缀= -G“Visual Studio 10 Win64” ..\ilmbase

  • 导航到Windows资源管理器中的IlmBase文件夹,打开IlmBase.sln并生成解决方案。成功构建后,右键单击 安装项目并生成。它会将输出安装到您选择的路径 在上一步中设置

  • 转到并下载zlib

  • 启动命令窗口,使用CMakeLists.txt导航到OpenEXR文件夹,然后键入命令:setlocal del/f CMakeCache.txt 克马克 -地榆根= -DILMBASE_包前缀= -DCMAKE\u安装\u前缀= -G“Visual Studio 10 Win64”^ ..\openexr

  • 导航到Windows资源管理器中的OpenEXR文件夹,打开OpenEXR.sln并生成解决方案。成功构建后,右键单击 安装项目并生成。它会将输出安装到您选择的路径 在上一步中设置

  • 第一步到第二步对我来说没有问题。IlmBase的lib、dll和头文件存储在“build”文件夹中:

    我对步骤1至2执行的指令:

    wget.exe https://github.com/openexr/openexr/archive/v2.2.0.zip -OC:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    7za.exe x C:\thirdparty\vs2015\x64\openexr-2.2.0.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    C:
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\openexr-2.2.0 -BC:\build\vs2015\x64\openexr-2.2.0 ^
    setlocal
    del /f CMakeCache.txt
    cmake -DCMAKE_INSTALL_PREFIX="..\ilmbase\build" -G "Visual Studio 14 2015 Win64" ..\ilmbase
    cmake --build . --config Release
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    
    步骤3(下载和构建zlib-1.2.8)也很简单:

    wget.exe http://zlib.net/zlib128.zip -OC:\thirdparty\vs2015\x64\zlib-1.2.8.zip
    7za.exe x C:\thirdparty\vs2015\x64\zlib-1.2.8.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\zlib-1.2.8.zip
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\zlib-1.2.8 -BC:\build\vs2015\x64\zlib-1.2.8
    C:
    cd C:\build\vs2015\x64\zlib-1.2.8
    cmake --build . --config Release
    cmake --build . --config Debug
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.8\lib
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.8\bin
    copy Debug\zlibd.dll C:\thirdparty\vs2015\x64\zlib-1.2.8\bin\zlibd.dll
    copy Debug\zlibd.exp C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibd.exp
    copy Debug\zlibd.ilk C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibd.ilk
    copy Debug\zlibd.lib C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibd.lib
    copy Debug\zlibd.pdb C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibstaticd.lib
    copy Release\zlib.dll C:\thirdparty\vs2015\x64\zlib-1.2.8\bin\zlib.dll
    copy Release\zlib.exp C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlib.exp
    copy Release\zlib.lib C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlib.lib
    copy Release\zlibstatic.lib C:\thirdparty\vs2015\x64\zlib-1.2.8\lib\zlibstatic.lib
    cd C:\thirdparty\vs2015\x64
    rmdir C:\build\vs2015\x64\zlib-1.2.8 /S /Q
    
    现在进入步骤4+5。我正在执行以下声明:

    cmake -DZLIB_ROOT="C:\thirdparty\vs2015\x64\zlib-1.2.8" ^
    -DILMBASE_PACKAGE_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase\build" ^
    -DCMAKE_INSTALL_PREFIX="..\OpenEXR\build" ^
    -G "Visual Studio 14 2015 Win64" ^
    ..\openexr
    
    我正在打开openexr.sln,然后尝试构建IlmInf。有一个错误:“cmd.exe”退出,代码为-1073741515

    以下是错误日志:

    4>------ Build started: Project: IlmImf, Configuration: Debug x64 ------ 
    4>  Building Custom Rule C:/thirdparty/vs2015/x64/openexr-2.2.0/OpenEXR/IlmImf/CMakeLists.txt
    4>  CMake does not need to re-run because C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\CMakeFiles\generate.stamp is up-to-date. 
    4>  Generating b44ExpLogTable.h 
    4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code -1073741515.
    ========== Build: 3 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    
    我不明白为什么我会犯这个错误。我做错了什么


    顺便说一句:我用来构建zlib和OpenEXR的批处理脚本可以在这里找到:

    IlmImf尝试运行b44ExpLogTable.exe,它需要位于正确位置的Half.dll文件。将Half.dll等文件复制到正确位置时,一切正常

    我使用以下windows批处理脚本来处理构建OpenEXR并将所有内容复制到正确的位置:

    构建openexr-2.2.0\u Visual Studio 14 2015 Win64.cmd

    wget.exe https://github.com/openexr/openexr/archive/v2.2.0.zip -OC:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    7za.exe x C:\thirdparty\vs2015\x64\openexr-2.2.0.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    C:
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase
    cmake -DCMAKE_INSTALL_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
     ..\ilmbase
    setlocal
    del /f CMakeCache.txt
    cmake -DCMAKE_INSTALL_PREFIX="..\deploy" -G "Visual Studio 14 2015 Win64" ..\ilmbase
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR
    setlocal
    del /f CMakeCache.txt
    cmake -DZLIB_ROOT="C:\thirdparty\vs2015\x64\zlib-1.2.11" ^
    -DILMBASE_PACKAGE_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -DCMAKE_INSTALL_PREFIX="..\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
    ..\openexr
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Imath-2_2.dll
    
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    
    wget.exe http://zlib.net/zlib1211.zip -OC:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    7za.exe x C:\thirdparty\vs2015\x64\zlib-1.2.11.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\zlib-1.2.11 -BC:\thirdparty\vs2015\x64\zlib-1.2.11\build
    C:
    cd C:\thirdparty\vs2015\x64\zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\lib
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\bin
    copy Debug\zlibd.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlibd.dll
    copy Debug\zlibd.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.exp
    copy Debug\zlibd.ilk C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.ilk
    copy Debug\zlibd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.lib
    copy Debug\zlibd.pdb C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstaticd.lib
    copy Release\zlib.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlib.dll
    copy Release\zlib.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.exp
    copy Release\zlib.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.lib
    copy Release\zlibstatic.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstatic.lib
    copy zconf.h C:\thirdparty\vs2015\x64\zlib-1.2.11\zconf.h
    
    构建OpenEXR需要预构建zlib版本。我使用以下脚本构建zlib:

    Build_zlib-1.2.11_Visual Studio 14 2015 Win64.cmd

    wget.exe https://github.com/openexr/openexr/archive/v2.2.0.zip -OC:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    7za.exe x C:\thirdparty\vs2015\x64\openexr-2.2.0.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    C:
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase
    cmake -DCMAKE_INSTALL_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
     ..\ilmbase
    setlocal
    del /f CMakeCache.txt
    cmake -DCMAKE_INSTALL_PREFIX="..\deploy" -G "Visual Studio 14 2015 Win64" ..\ilmbase
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR
    setlocal
    del /f CMakeCache.txt
    cmake -DZLIB_ROOT="C:\thirdparty\vs2015\x64\zlib-1.2.11" ^
    -DILMBASE_PACKAGE_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -DCMAKE_INSTALL_PREFIX="..\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
    ..\openexr
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Imath-2_2.dll
    
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    
    wget.exe http://zlib.net/zlib1211.zip -OC:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    7za.exe x C:\thirdparty\vs2015\x64\zlib-1.2.11.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\zlib-1.2.11 -BC:\thirdparty\vs2015\x64\zlib-1.2.11\build
    C:
    cd C:\thirdparty\vs2015\x64\zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\lib
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\bin
    copy Debug\zlibd.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlibd.dll
    copy Debug\zlibd.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.exp
    copy Debug\zlibd.ilk C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.ilk
    copy Debug\zlibd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.lib
    copy Debug\zlibd.pdb C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstaticd.lib
    copy Release\zlib.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlib.dll
    copy Release\zlib.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.exp
    copy Release\zlib.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.lib
    copy Release\zlibstatic.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstatic.lib
    copy zconf.h C:\thirdparty\vs2015\x64\zlib-1.2.11\zconf.h
    

    您也可以从

    下载这些脚本。IlmImf尝试运行b44ExpLogTable.exe,它需要位于正确位置的Half.dll文件。将Half.dll等文件复制到正确位置时,一切正常

    我使用以下windows批处理脚本来处理构建OpenEXR并将所有内容复制到正确的位置:

    构建openexr-2.2.0\u Visual Studio 14 2015 Win64.cmd

    wget.exe https://github.com/openexr/openexr/archive/v2.2.0.zip -OC:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    7za.exe x C:\thirdparty\vs2015\x64\openexr-2.2.0.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    C:
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase
    cmake -DCMAKE_INSTALL_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
     ..\ilmbase
    setlocal
    del /f CMakeCache.txt
    cmake -DCMAKE_INSTALL_PREFIX="..\deploy" -G "Visual Studio 14 2015 Win64" ..\ilmbase
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR
    setlocal
    del /f CMakeCache.txt
    cmake -DZLIB_ROOT="C:\thirdparty\vs2015\x64\zlib-1.2.11" ^
    -DILMBASE_PACKAGE_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -DCMAKE_INSTALL_PREFIX="..\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
    ..\openexr
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Imath-2_2.dll
    
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    
    wget.exe http://zlib.net/zlib1211.zip -OC:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    7za.exe x C:\thirdparty\vs2015\x64\zlib-1.2.11.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\zlib-1.2.11 -BC:\thirdparty\vs2015\x64\zlib-1.2.11\build
    C:
    cd C:\thirdparty\vs2015\x64\zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\lib
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\bin
    copy Debug\zlibd.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlibd.dll
    copy Debug\zlibd.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.exp
    copy Debug\zlibd.ilk C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.ilk
    copy Debug\zlibd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.lib
    copy Debug\zlibd.pdb C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstaticd.lib
    copy Release\zlib.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlib.dll
    copy Release\zlib.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.exp
    copy Release\zlib.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.lib
    copy Release\zlibstatic.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstatic.lib
    copy zconf.h C:\thirdparty\vs2015\x64\zlib-1.2.11\zconf.h
    
    构建OpenEXR需要预构建zlib版本。我使用以下脚本构建zlib:

    Build_zlib-1.2.11_Visual Studio 14 2015 Win64.cmd

    wget.exe https://github.com/openexr/openexr/archive/v2.2.0.zip -OC:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    7za.exe x C:\thirdparty\vs2015\x64\openexr-2.2.0.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\openexr-2.2.0.zip
    C:
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\IlmBase
    cmake -DCMAKE_INSTALL_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
     ..\ilmbase
    setlocal
    del /f CMakeCache.txt
    cmake -DCMAKE_INSTALL_PREFIX="..\deploy" -G "Visual Studio 14 2015 Win64" ..\ilmbase
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    cd C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR
    setlocal
    del /f CMakeCache.txt
    cmake -DZLIB_ROOT="C:\thirdparty\vs2015\x64\zlib-1.2.11" ^
    -DILMBASE_PACKAGE_PREFIX="C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy" ^
    -DCMAKE_INSTALL_PREFIX="..\deploy" ^
    -G "Visual Studio 14 2015 Win64" ^
    ..\openexr
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Release\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\RelWithDebInfo\Imath-2_2.dll
    
    mkdir C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Half.dll          C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Half.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Iex-2_2.dll       C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Iex-2_2.dll 
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IexMath-2_2.dll   C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IexMath.2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\IlmThread-2_2.dll C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\IlmThread-2_2.dll
    copy C:\thirdparty\vs2015\x64\openexr-2.2.0\deploy\lib\Imath-2_2.dll     C:\thirdparty\vs2015\x64\openexr-2.2.0\OpenEXR\IlmImf\Debug\Imath-2_2.dll
    
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cmake --build . --config Debug
    cmake --build . --target INSTALL
    
    wget.exe http://zlib.net/zlib1211.zip -OC:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    7za.exe x C:\thirdparty\vs2015\x64\zlib-1.2.11.zip -oC:\thirdparty\vs2015\x64
    del C:\thirdparty\vs2015\x64\zlib-1.2.11.zip
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -HC:\thirdparty\vs2015\x64\zlib-1.2.11 -BC:\thirdparty\vs2015\x64\zlib-1.2.11\build
    C:
    cd C:\thirdparty\vs2015\x64\zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\lib
    mkdir C:\thirdparty\vs2015\x64\zlib-1.2.11\bin
    copy Debug\zlibd.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlibd.dll
    copy Debug\zlibd.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.exp
    copy Debug\zlibd.ilk C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.ilk
    copy Debug\zlibd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.lib
    copy Debug\zlibd.pdb C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstaticd.lib
    copy Release\zlib.dll C:\thirdparty\vs2015\x64\zlib-1.2.11\bin\zlib.dll
    copy Release\zlib.exp C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.exp
    copy Release\zlib.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlib.lib
    copy Release\zlibstatic.lib C:\thirdparty\vs2015\x64\zlib-1.2.11\lib\zlibstatic.lib
    copy zconf.h C:\thirdparty\vs2015\x64\zlib-1.2.11\zconf.h
    
    您还可以从步骤中下载这些脚本以修复错误MSB6006“cmd.exe”:

  • 确保您已经构建了ilmbase.sln解决方案,并在构建之后“安装ilmbase的一部分。因此,您将在ilmbase目录中找到libinclude文件夹

  • 打开高级系统设置和路径…\ilmbase-2.2.0\lib到“路径”系统变量的末尾。关闭高级系统设置

  • 重新启动Visual Studio并重建openexr.sln

  • 修复错误MSB6006“cmd.exe”的步骤:

  • 确保您已经构建了ilmbase.sln解决方案,并在构建之后“安装ilmbase的一部分。因此,您将在ilmbase目录中找到libinclude文件夹

  • 打开高级系统设置和路径…\ilmbase-2.2.0\lib到“路径”系统变量的末尾。关闭高级系统设置

  • 重新启动Visual Studio并重建openexr.sln


  • 接受的答案对我来说不适用于OpenEXR 2.3.0。下面是一个批处理文件,适用于我使用VS 2015 x64的Windows 10。 您需要wget.exe、7za.exe和同一文件夹中的下一批内容。 请注意,我禁用了Python库,因为我不需要它们,也没有安装Python

    rem ### ZLIB ###
    
    wget.exe http://zlib.net/zlib1211.zip -O.\zlib-1.2.11.zip
    7za.exe x .\zlib-1.2.11.zip -o.\
    del .\zlib-1.2.11.zip
    
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -H.\zlib-1.2.11 -B.\zlib-1.2.11\build
    
    cd zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cd..
    mkdir lib
    mkdir bin
    cd build
    copy Debug\zlibd.dll ..\bin\zlibd.dll
    copy Debug\zlibd.exp ..\lib\zlibd.exp
    copy Debug\zlibd.ilk ..\lib\zlibd.ilk
    copy Debug\zlibd.lib ..\lib\zlibd.lib
    copy Debug\zlibd.pdb ..\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib ..\lib\zlibstaticd.lib
    copy Release\zlib.dll ..\bin\zlib.dll
    copy Release\zlib.exp ..\lib\zlib.exp
    copy Release\zlib.lib ..\lib\zlib.lib
    copy Release\zlibstatic.lib ..\lib\zlibstatic.lib
    copy zconf.h ..\zconf.h
    
    cd..\..
    
    rem ### OPENEXR ### 
    
    wget.exe https://github.com/openexr/openexr/archive/v2.3.0.zip -O.\openexr-2.3.0.zip
    7za.exe x .\openexr-2.3.0.zip -o.
    del .\openexr-2.3.0.zip
    cd openexr-2.3.0\
    setlocal
    del /f CMakeCache.txt
    cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX="%~dp0openexr-2.3.0" -DCMAKE_PREFIX_PATH="%~dp0zlib-1.2.11" -DOPENEXR_BUILD_PYTHON_LIBS=0
    cmake --build . --target INSTALL --config Debug -- /maxcpucount:8
    cmake --build . --target INSTALL --config Release -- /maxcpucount:8
    cmake --build . --target INSTALL --config RelWithDebInfo -- /maxcpucount:8
    
    pause
    

    接受的答案对我来说不适用于OpenEXR 2.3.0。下面是一个批处理文件,适用于我使用VS 2015 x64的Windows 10。 您需要wget.exe、7za.exe和同一文件夹中的下一批内容。 请注意,我禁用了Python库,因为我不需要它们,也没有安装Python

    rem ### ZLIB ###
    
    wget.exe http://zlib.net/zlib1211.zip -O.\zlib-1.2.11.zip
    7za.exe x .\zlib-1.2.11.zip -o.\
    del .\zlib-1.2.11.zip
    
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    cmake -G"Visual Studio 14 2015 Win64" -H.\zlib-1.2.11 -B.\zlib-1.2.11\build
    
    cd zlib-1.2.11\build
    cmake --build . --config Debug
    cmake --build . --config Release
    cmake --build . --config RelWithDebInfo
    cd..
    mkdir lib
    mkdir bin
    cd build
    copy Debug\zlibd.dll ..\bin\zlibd.dll
    copy Debug\zlibd.exp ..\lib\zlibd.exp
    copy Debug\zlibd.ilk ..\lib\zlibd.ilk
    copy Debug\zlibd.lib ..\lib\zlibd.lib
    copy Debug\zlibd.pdb ..\lib\zlibd.pdb
    copy Debug\zlibstaticd.lib ..\lib\zlibstaticd.lib
    copy Release\zlib.dll ..\bin\zlib.dll
    copy Release\zlib.exp ..\lib\zlib.exp
    copy Release\zlib.lib ..\lib\zlib.lib
    copy Release\zlibstatic.lib ..\lib\zlibstatic.lib
    copy zconf.h ..\zconf.h
    
    cd..\..
    
    rem ### OPENEXR ### 
    
    wget.exe https://github.com/openexr/openexr/archive/v2.3.0.zip -O.\openexr-2.3.0.zip
    7za.exe x .\openexr-2.3.0.zip -o.
    del .\openexr-2.3.0.zip
    cd openexr-2.3.0\
    setlocal
    del /f CMakeCache.txt
    cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX="%~dp0openexr-2.3.0" -DCMAKE_PREFIX_PATH="%~dp0zlib-1.2.11" -DOPENEXR_BUILD_PYTHON_LIBS=0
    cmake --build . --target INSTALL --config Debug -- /maxcpucount:8
    cmake --build . --target INSTALL --config Release -- /maxcpucount:8
    cmake --build . --target INSTALL --config RelWithDebInfo -- /maxcpucount:8
    
    pause
    

    在OpenEXR 2.3.0上,似乎有一个with IlmImf CMake文件

    建议的解决方法(使用
    CMAKE\u INSTALL\u PREFIX
    搜索并替换
    OPENEXR\u PACKAGE\u PREFIX
    )在我的情况下运行良好

    就我而言,我只是打电话

    sed-i“s/OPENEXR\u PACKAGE\u PREFIX/CMAKE\u INSTALL\u PREFIX/g”。/OPENEXR/IlmImf/CMakeLists.txt


    OpenEXR 2.3.0上运行
    cmake
    (git for windows)

    之前,似乎有一个with IlmImf cmake文件

    建议的解决方法(使用
    CMAKE\u INSTALL\u PREFIX
    搜索并替换
    OPENEXR\u PACKAGE\u PREFIX
    )在我的情况下运行良好

    就我而言,我只是打电话

    sed-i“s/OPENEXR\u PACKAGE\u PREFIX/CMAKE\u INSTALL\u PREFIX/g”。/OPENEXR/IlmImf/CMakeLists.txt


    在运行
    cmake
    (git for windows)

    之前,请选择合适的目录?如果它位于Additiona中,VS不应该能够找到它吗