vs2013下openSIFT的编译调试
2015-08-03 11:33
591 查看
本文的目标是,用vs2013搭建openSIFT源码开发环境。由于openSIFT源码是linux环境下,本文的工作是用cmake来生成vs2013下的开发环境。主要参考这篇文章,由于基本环境有些差别,所以需要做一些修改。加上个人对cmake写法不熟悉,走了一些弯路,这里也做一个记录和说明。
环境:vs2013, opencv2.4.10, GTK2.24, cmake 3.3.0, openSIFT(github)
cmake过程需要编辑CMakeLists.txt文件,这里把整个文件列出,并做一些简单说明:
建议先学习一下cmake相关规则,CMakeLists.txt都要做一些修改,主要如下:
(1). 这篇文章中丢失了很多空格,直接copy过来会有不少错误;
(2). 所有依赖文件的路径,版本都必须和自己的环境完全吻合;
(3). 不清楚没能编译出libopensift.lib文件,只好把LINK_LIBRARY_SIFT中一行注释掉;
(4). windows环境下无unistd.h文件,需要下载该文件及其依赖文件,参考这篇文章;
(5). openSIFT源码中gtk头文件路径可能需要修改,其他bug以及编译过程参考上文;
放上matchd运行结果
环境:vs2013, opencv2.4.10, GTK2.24, cmake 3.3.0, openSIFT(github)
cmake过程需要编辑CMakeLists.txt文件,这里把整个文件列出,并做一些简单说明:
#############从这里开始################## CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(OpenSIFT) #dependencies SET(OPENCV_ROOT D:/Program\ Files/opencv/build) #注意路径 SET(OPENCV_LIB D:/Program\ Files/opencv/build/x86/vc12/lib) SET(GTK_ROOT D:/Program\ Files/gtk+-bundle_2.24.10-20120208_win32) INCLUDE_DIRECTORIES("${OPENCV_ROOT}/include" "${OPENCV_ROOT}/include/opencv" "include") #注意空格,注意路径 LINK_DIRECTORIES("${OPENCV_ROOT}/x64/vc12/lib") SET(LINK_LIBRARY_OPENCV ${OPENCV_LIB}/opencv_core2410.lib #注意路径,注意版本 ${OPENCV_LIB}/opencv_core2410d.lib ${OPENCV_LIB}/opencv_highgui2410.lib ${OPENCV_LIB}/opencv_highgui2410d.lib ${OPENCV_LIB}/opencv_imgproc2410.lib ${OPENCV_LIB}/opencv_imgproc2410d.lib ) message(${LINK_LIBRARY_OPENCV}) SET(LINK_LIBRARY_GTK ${GTK_ROOT}/lib/gtk-win32-2.0.lib #注意路径,注意版本 ${GTK_ROOT}/lib/gdk-win32-2.0.lib ) ############################################################################ #libopensift SET(LIBOPENSIFT libopensift) ADD_LIBRARY(${LIBOPENSIFT} STATIC #注意空格 src/imgfeatures.c include/imgfeatures.h src/kdtree.c include/kdtree.h src/minpq.c include/minpq.h src/sift.c include/sift.h src/utils.c include/utils.h src/xform.c include/xform.h ) message(${LIBOPENSIFT}) SET_TARGET_PROPERTIES(${LIBOPENSIFT} PROPERTIES OUTPUT_NAME_DEBUG ${LIBOPENSIFT}d ) SET_TARGET_PROPERTIES(${LIBOPENSIFT} PROPERTIES OUTPUT_NAME_RELEASE ${LIBOPENSIFT} ) TARGET_INCLUDE_DIRECTORIES(libopensift PUBLIC #注意空格 "${GTK_ROOT}/include" "${GTK_ROOT}/include/gtk-2.0" "${GTK_ROOT}/include/cairo" "${GTK_ROOT}/include/pango-1.0" "${GTK_ROOT}/include/atk-1.0" "${GTK_ROOT}/include/pixman-1" "${GTK_ROOT}/include/freetype2" "${GTK_ROOT}/include/libpng14" "${GTK_ROOT}/include/gdk-pixbuf-2.0" "${GTK_ROOT}/include/glib-2.0" "${GTK_ROOT}/lib/glib-2.0/include" ) TARGET_LINK_LIBRARIES(libopensift ${LINK_LIBRARY_OTHERS}) SET(LINK_LIBRARY_SIFT # E:/opensift/lib/${LIBOPENSIFT}.lib #未编译出libopensift.lib文件,只好把这里注释掉,原因不明 E:/opensift/lib/${LIBOPENSIFT}d.lib ) SET(LINK_LIBRARY_OTHERS ${LINK_LIBRARY_GTK} ${LINK_LIBRARY_OPENCV}) SET(LINK_LIBRARY_ALL ${LINK_LIBRARY_GTK} ${LINK_LIBRARY_OPENCV} ${LINK_LIBRARY_SIFT}) ############################################################################ #siftfeat SET(SIFTFEAT siftfeat) ADD_EXECUTABLE(${SIFTFEAT} src/siftfeat.c include/getopt.h #unistd.h文件为linux所有,依赖getopt.h,需要下载并放在该目录下 src/getopt.c ) TARGET_LINK_LIBRARIES(${SIFTFEAT} ${LINK_LIBRARY_ALL}) SET_TARGET_PROPERTIES(${SIFTFEAT} PROPERTIES OUTPUT_NAME_DEBUG ${SIFTFEAT}d ) SET_TARGET_PROPERTIES(${SIFTFEAT} PROPERTIES OUTPUT_NAME_RELEASE ${SIFTFEAT} ) ############################################################################ #match SET(MATCH match) #注意空格 ADD_EXECUTABLE(${MATCH} src/match.c include/getopt.h #unistd.h文件为linux所有 src/getopt.c ) TARGET_LINK_LIBRARIES(${MATCH} ${LINK_LIBRARY_ALL}) SET_TARGET_PROPERTIES(${MATCH} PROPERTIES OUTPUT_NAME_DEBUG ${MATCH}d ) SET_TARGET_PROPERTIES(${MATCH} PROPERTIES OUTPUT_NAME_RELEASE ${MATCH} ) ############################################################################ #dspfeat SET(DSPFEAT dspfeat) #注意空格 ADD_EXECUTABLE(${DSPFEAT} src/dspfeat.c include/getopt.h #unistd.h文件为linux所有 src/getopt.c ) TARGET_LINK_LIBRARIES(${DSPFEAT} ${LINK_LIBRARY_ALL}) SET_TARGET_PROPERTIES(${DSPFEAT} PROPERTIES OUTPUT_NAME_DEBUG ${DSPFEAT}d ) SET_TARGET_PROPERTIES(${DSPFEAT} PROPERTIES OUTPUT_NAME_RELEASE ${DSPFEAT} )
建议先学习一下cmake相关规则,CMakeLists.txt都要做一些修改,主要如下:
(1). 这篇文章中丢失了很多空格,直接copy过来会有不少错误;
(2). 所有依赖文件的路径,版本都必须和自己的环境完全吻合;
(3). 不清楚没能编译出libopensift.lib文件,只好把LINK_LIBRARY_SIFT中一行注释掉;
(4). windows环境下无unistd.h文件,需要下载该文件及其依赖文件,参考这篇文章;
(5). openSIFT源码中gtk头文件路径可能需要修改,其他bug以及编译过程参考上文;
放上matchd运行结果
相关文章推荐
- cmake clion 构建cocos2dx 应用程序并编译ios mac android
- OpenCV配置,从来没有这么简单!
- MySQL CMake参数说明手册
- CMake 使用方法
- 用 cmake 构建Qt工程(对比qmake进行学习)
- CMake 手册详解(一)
- 一起学习CMake – 01
- MySQL 安装 CMake Error CMAKE_CXX_COMPILER not set
- MySQL5.5安装出现CMake错误找不到CMakelists.txt原因
- 在vc6中使用PCRE-8.33
- Win8.1下FreeImage.lib库的配置和简单使用
- VS2013中 命名空间“UnityEngine”中不存在类型或命名空间名称“UI”。是否缺少程序集引用?
- [Qt]Qt5.3.0+VS2013+Win32平台搭建
- 在Qtcreator下cmake工程文件及使用Qt制作PCL C++ GUI
- [VS2013+Win7]GLEW库配置问题 error LNK2019: 无法解析的外部符号 _gluGetString@4
- CMake生成VS2012 ARM project遇到的问题
- OpenCV2.4.10+VS2013+Win8.1 64位配置
- 神经网络 caffe 的 vs2013 版本代码
- Windows8下PhoneGap 4 + Android Studio 1.0 + VS2013配置指南
- 使用yum 使用 CentOS-6.5-x86_64-bin-DVD1.iso 作为本地源