hugin的编译其实有点复杂,因为涉及的包太多了,而且网上也没有靠谱的说明,我能找到的材料主要是
前者是编译Hugin的说明,后者是编译需要的各种开源库的SDK编译说明,要按照第二个网址的内容编译好所有需要的开源库,形成SDK然后再编译Hugin。
或直接
将文件夹中所有没有扩展名的文件加上".txt'的扩展名
在
<SDKHOME>
enblend-enfuse-3.2中建立文件夹doc,然后随便找两个pdf放进去,分别命名为
enblend.pdf和enfuse.pdf
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:Dokuments and SettingsGuido>d:
D:>cd usrsrcSDKboost_1_39_0
D:usrsrcSDKboost_1_39_0>
${wxWidgets_ROOT_DIR}/src/tiff下面加上
${wxWidgets_ROOT_DIR}/src/tiff/libtiff,保存退出
copy $(TargetPath) $(SolutionDir)INSTALLFILESbin$(TargetFileName)
本文主要按照以上两个网址的说明进行编译,并对其中不准确的地方进行补充。
1.开发环境的准备
1.1 必备软件
1.2 必要的库
按照说明,32位的编译可以从
http://hugin.panotools.org/sdk/MSVC/Hugin-SDK-20090509-win32.exe
下载预编译的SDK,但是下载到的SDK极端不完整,需要按照SDK的编译说明进行补足。
预编译包中已有的文件夹:
autopano-sift-C
boost_1_39_0
Deploy
exiftool
exiv2-0.18.1
expat-2.0.1
gettext
glew
hugin-2012.0.0
libpano
libxml2-2.7.3
OpenEXR
UnxUtils
wxWidgets-2.8.10
将下载下的SDK自解压解压到随便什么文件夹,在下文中此文件夹用<SDKHOME>指代
需要添加的库:
enblend-enfuse-3.2
enblend-enfuse-3.2.zip
1.3 编译SDK
首先要把上面提到的软件都装上,就不多说了。
在编译每一个单独的包之前,都要确保这些包的解决方案中每一个项目
的属性->c/c++->代码生成->运行时库项是
多线程(/MT)(当编译配置是release时)或
多线程调试(/MTd)
(当编译配置是debug时),否则在最终生成hugin时会出错,具体原因参见
http://blog.csdn.net/houwalkman/article/details/4243286
然后开始编译后添加的几个软件包:
- lcms-1.18a
将
lcms-1.18a.zip解压到<SDKHOME>中
打开
<SDKHOME>lcms-1.18ProjectsVC2008lcms.sln
在解决方案配置下拉菜单中选择"release",仅生成lcms
然后在解决方案配置下拉菜单中选择"debug",
仅生成lcms
结果:在
<SDKHOME>lcms-1.18LibMS中存在生成的库文件
- freeglut-2.6.0
将
freeglut-2.6.0.tar.gz解压到
<SDKHOME>
打开
<SDKHOME>freeglut-2.6.0VisualStudio2008Staticf reeglut.sln
在解决方案配置下拉菜单中选择"release",仅生成
freeglut
然后在解决方案配置下拉菜单中选择"debug",
仅生成
freeglut
结果:在
<SDKHOME>freeglut-2.6.0VisualStudio2008StaticD ebug和
<SDKHOME>freeglut- 2.6.0VisualStudio2008StaticR elease中存在生成的库文件
- enblend-enfuse-3.2
将
enblend-enfuse-3.2.zip
解压到
<SDKHOME>
结果:
<SDKHOME>enblend-enfuse-3.2存在enblend.exe和enfuse.exe
- boost_1_43_0
将boost_1_43_0 解压到<SDKHOME>
将boost-jam-3.1.18-1-ntx86.zip中的bjam.exe解压到
<SDKHOME>
boost_1_43_0
打开命令提示符,并切换到
<SDKHOME>boost_1_43_0
例如:
然后执行命令
bjam --with-date_time --with-thread --with-regex --with-filesystem --with-iostreams --with-system --with-signals toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static stage
编译boost视机器配置不同可能需要较长时间,请耐心等待.
之行结束之后会有类似
...updated 56 targets...
d:usrsrcSDKboost_1_39_0>
的字样,具体的数字可能不同.
结果:<SDKHOME>boost_1_43_0和下面的子文件夹boost中存在.h文件
<SDKHOME>boost_1_43_0stagelib中存在编译好的lib文件
- wxWidgets-2.9.4
在<SDKHOME>下建立文件夹
wxWidgets-
2.9.4并将
wxWidgets-
2.9.4的内容解压到此文件夹
将
wxWidgets-
2.8.10删除
打开VS的命令行模式(开始->程序->Microsoft Visual Studio 2008->Visual Studio Tools->Visual
Studio 命令提示)
在命令行下切换到
<SDKHOME>wxWidgets-2.9.4buildmsw
例如:
C:Program FilesMicrosoft Visual Studio 9.0VC>d:
D:>cd usrsrcSDKwxWidgets-2.8.10buildmsw
D:usrsrcSDKwxWidgets-2.8.10buildmsw>
然后执行下面的命令:
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static
结果:
在
<SDKHOME>wxWidgets-2.9.4include和子目录中存在.h的包括文件
在<SDKHOME>wxWidgets-2.9.4libvc_lib中存在库文件
然后再编译一个小东西,打开<SDKHOME>wxWidgets-2.9.4utilswxrcwxrc_vc9.vcproj,然后将其编译,会 在vc_mswu中生成wxrc.exe,这个东西先记着,后面会用到.
- Panorama Tools
将<SDKHOME>libpano下的pano13目录删除,将libpano13-2.9.18.tar.gz解压到此目录并重新命名为pano13
在Windows的系统属性中设置环境变量WXWIDGETS_HOME,并将其赋值为<SDKHOME>wxWidgets-2.9.4
(注意
<SDKHOME>要用真实的路径替换)
设置JDK_HOME,赋值为JDK的路径,例如C:ProgramFilesJavajdk1.6.0_13,重新启动使环境变量生效
选择"Debug CMD"并只生成pano13
选择"Release CMD"并生成解决方案
结果:
在
<SDKHOME>libpanopano13toolsReleas e CMD中存在生成的可执行文件
在
<SDKHOME>libpanopano13存在.h文件
在
<SDKHOME>libpanopano13Debug CMD和
<SDKHOME>libpanopano13Release CMD中存在生成的lib文件
- TCLAP
将tclap-1.2.0.tar.gz解压到<SDKHOME>
结果:需要的头文件存在于<SDKHOME>tclap-1.2.0includetclap
- GLib
将glib-dev_2.28.8-1_win32.zip解压到<SDKHOME>,并将文件夹重命名为glib_2.28.8
将glib_2.28.8-1_win32.zip中bin文件夹中的所有dll解压到
<SDKHOME>
glib_2.28.8bin中
结果:
<SDKHOME>
glib_2.28.8bin中存在dll与exe文件
<SDKHOME>
glib_2.28.8lib中存在lib文件
- LensFun
将下载下来的Lensfun包解压到<SDKHOME>中,并命名为lensfun
打开CMake
点击browse source,选择
<SDKHOME>
lensfun
然后在"Where to build the binaries"后面填
<SDKHOME>
lensfun-build
(注意以上两个<SDKHOME>要用真实的路径替换)
点Configure,弹出的对话框选择"Visual Studio 9 2008"/"Use default native compilers",然后finish
这时会提示
Could not find glib2,
手动修改GLIB_BASE_DIR项后面的目录名称为
<SDKHOME>
glib_2.28.8
(注意以上<SDKHOME>要用真实的路径替换,并注意"_"与"-"的区别)
然后再次
Configure,这时应该只有
GLIB2_DLL-NOTFOUND了,手动将其指定到
<SDKHOME>
bin
libglib-2.0- 0.dll
再次
Configure,这时应该没问题了,Generate
打开<SDKHOME>
lensfun-build
lensfun.sln
选择release,生成解决方案
成功之后再仅生成INSTALL
结果:
<SDKHOME>
lensfunbin中存在exe文件
<SDKHOME>
lensfunlib中存在lib文件
- SWIG
将swigwin-2.0.8.zip解压到<SDKHOME>中
结果:
<SDKHOME>
swigwin-2.0.8中存在swig.exe
- make_3.81
将make-3.81.tar.gz解压到<SDKHOME>中
打开<SDKHOME>make-3.81make_msvc_net2003.sln 并确认转换
选择"release"
生成解决方案
将<SDKHOME>make-3.81Releasemake_msvc.net2003.exe重命名为
<SDKHOME>make-3.81Releasemake.exe
结果:<SDKHOME>make-3.81Release 目录下存在make.exe
- ______
2.编译
2.1 生成解决方案
这一步的目的是用cmake和hugin源代码生成可以使用VS编译的解决方案
下载
hugin-2012.0.0.tar.bz2,并解压到<SDKHOME>
修改
<SDKHOME>
hugin-2012.0.0
CMakeModules
FindTIFF.cmake,在26行的
打开CMake,
点击browse source,选择
<SDKHOME>
hugin-2012.0.0
然后在"Where to build the binaries"后面填
<SDKHOME>
hugin-build
(注意以上两个<SDKHOME>要用真实的路径替换)
点Configure,弹出的对话框选择"Visual Studio 9 2008"/"Use default native compilers",然后finish
然后他会提示找不到WxWidgets,把wxWidgets_ROOT_SUFFIX改成2.9.4然后继续Configure
接下来修改Boost_root_suffix,改成_1_43_0,
Configure
如果提示
Boost not found. Bad BOOST_ROOT? On windows, try editing Boost_root_suffix
尝试在系统的环境变量里添加BOOST_ROOT,指向<SDKHOME>boost_1_43_0
修改GLIB2_BASE_DIR,将最后的文件夹改为
glib_2.28.8,注意
"_"与"-"的区别,configure
在HUGIN_BUILDER项填上自己的名字
,configure
在HUGIN_BUILDDATE项填上编译的日期,并勾选BUILD_HSIBUILD_HUGINSETUP和BUILD_KEYPOINTS,Configure
修改SWIG_EXECUTEABLE,点击后面的值,右边会出带三个点的浏览按钮,点击并手动选择<SDKHOME>
swigwin- 2.0.8swig.exe
修改MAKENSIS_EXECUTABLE,将其指向NSIS安装文件夹中的
makensis.exe
这时系统会提示
Configuring done,然后点Generate
2.2 编译
打开<SDKHOME>
hugin-buildhugin.sln
选择"RelWithDebugInfo"
按住CTRL并点选以下项目:
calibrate_lens_gui
hugin
ptbatchergui
nona_gui
hugin_stitch_project
右键菜单里面选属性->连接器->常规,将"启用增量链接"改为"否(/INCREMENTAL:NO)"
然后生成解决方案
全部生成结束之后在解决方案资源管理器里点选INSTALL
然后点生成->生成INSTALL
完成之后会在<SDKHOME>hugin-buildINSTALLFILESbin里存在全部生成好的可执行文件,然后再<SDKHOME>中搜索
lensfun.dll
intl.dll
iconv.dll
libglib-2.0-0.dll
并将这四个文件拷贝入
<SDKHOME>
hugin-build
INSTALLFILESbin
此时点击
<SDKHOME>
hugin-build
INSTALLFILESbinhugin.exe应该就可以运行了
如果需要打包安装程序的话找到
<SDKHOME>INSTALL
HuginSetup.nsi,右键单击选择Compile NSIS Script就 可以了
ps:
如果需要运行调试,需要执行以下步骤:(以主程序项目hugin为例)
1.修改 项目 属性->配置属性->调试->命令 项为
$(SolutionDir)INSTALLFILESbin$(TargetFileName)
2.修改
项目 属性->配置属性->调试->工作目录 项为
$(SolutionDir)INSTALLFILESbin
3.修改 项目 属性->配置属性->生成事件->声称后事件->命令行 为
4.对于某些项目,可能需要提供命令行参数,这些参数填在
属性->配置属性->调试->命令参数 栏中
完成以上步骤之后,就可以运行调试了