如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?
我正在使用CMake 3.7.1。我想使用Visual Studio 2015 x64构建OpenEXR 2.2。发布版本包含详细的构建说明:如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?
Launch a command window, navigate to the IlmBase folder with CMakeLists.txt,and type command: setlocal del /f CMakeCache.txt cmake -DCMAKE_INSTALL_PREFIX= -G "Visual Studio 10 Win64" ..\ilmbase
Navigate to IlmBase folder in Windows Explorer, open ILMBase.sln and build the solution. When it build successfully, right click INSTALL project and build. It will install the output to the path you set up at the previous step.
Go to http://www.zlib.net and download zlib
Launch a command window, navigate to the OpenEXR folder with CMakeLists.txt, and type command: setlocal del /f CMakeCache.txt cmake -DZLIB_ROOT= -DILMBASE_PACKAGE_PREFIX= -DCMAKE_INSTALL_PREFIX= -G "Visual Studio 10 Win64"^ ..\openexr
Navigate to OpenEXR folder in Windows Explorer, open OpenEXR.sln and build the solution. When it build successfully, right click INSTALL project and build. It will install the output to the path you set up at the previous step.
步骤1到2对我没有任何问题。 IlmBase的lib,DLL和头文件被存储在 “建立” 文件夹中:
我执行用于步骤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 ==========
我不不明白为什么我得到这个错误。我在这里做错了什么?
BTW:用于构建的zlib和OpenEXR的我的批处理脚本可以在这里找到:https://bitbucket.org/snippets/Vertexwahn/
IlmImf尝试运行b44ExpLogTable.exe需要位于正确的地方Half.dll文件。当将Half.dll等文件复制到正确的位置时,一切正常。
我使用下面的Windows批处理脚本来处理建设的OpenEXR和复制所有的东西到合适的位置:
Build_openexr-2.2.0_Visual工作室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
大厦OpenEXR需要预建zlib版本。我建立的zlib使用下面的脚本:
Build_zlib-1.2.11_Visual工作室14 2015年Win64.cmd
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”:
确保y您已经建立了ilmbase.sln解决方案,然后构建“INSTALL”部分ilmbase。结果你会发现lib和包括文件夹ilmbase目录。
打开高级系统设置和你的路径... \ ilmbase-2.2.0 \ lib;到“路径”系统变量的末尾。关闭高级系统设置。
重新启动Visual Studio和重建openexr.sln
但是这是适当的目录? 如果VS位于其他库目录中,VS不能找到它吗? (在我的情况下,它不...)将它复制到可执行文件的目录有助于运行该exe本身,但似乎可执行文件被称为buildstep从其他地方启动 –
@StefanReinhardt我编辑我的帖子到明确适当的目录在哪里。 – Vertexwahn
很酷的感谢脚本,有助于自动化构建过程 –