澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

2上编写翻译安装Swift,VS2016开销情形陈设

苹果提供 Ubuntu上构建Swift 的教程,通过那么些课程小编尝试运用CentOS7.2上嘲笑一把。方今曾经打响在CentOS7.2上班成功安装 swift 4.0

Clang 之旅体系小说:Clang 之旅--使用 Xcode 开垦 Clang 插件Clang 之旅--[翻译]增加自定义的 attributeClang 之旅--达成八个自定义检查标准的 Clang 插件

澳门新浦京娱乐场网站 1

从今进入3.X有时以后,OpenCV将代码库分成了两局地,分别是和煦的着力功能库和试验性质的contrib库。
并且从3.1未来,编写翻译好的本子中就从未现存的x86平台的库了,想用就必须团结从源码编写翻译。
事先都以直接下载编写翻译好的版本。为了感受完整版本的OpenCV,也为了跟进后续的版本更新,只能硬着头皮来学一下怎么从源码安装OpenCV了。

前言

前段时间在跟那些的闲聊中说到了贰个比较特殊的须求:是还是不是有宗目的在于编写翻译阶段检查有个别方法的参数与重回值的品类同样,若是类型差别的话能抛出编写翻译错误的提示。那犹如已经不是 Objective-C 只怕 Swift的语言语法本身所能化解的了,老大还教导了足以从编写翻译器等尾部中举办钻探。于是,小编踏进了 Clang 和 LLVM 的大门。

自个儿计划将 Clang 的钻研心得分为几篇小说来写,那是 Clang 之旅的第一篇,重要讲什么用 Xcode 编写翻译 Clang,以及落到实处多少个粗略的 Clang 插件并挂载到 Xcode 中插足编写翻译流程,算是进入 Clang 的三昧。只是,那门槛就狠狠地让自个儿吃了伤心,谷歌找到好几篇博客讲怎么编写翻译 Clang 的,不过也是有点开春了,版本相比旧,编译出来的 Clang 无法运作在当今的种类上;还或然有局地写的相比含糊,漏了某个关键步骤,导致花了几许个钟头跟着教程做下来最后依然一堆error;而且试错的财力依旧相比高的,下载的源码有1G多(思索从 Github 下载的进度,需求挂个代理),完整编译出来有20G左右,小编的15款 Macbook Pro 大致须求疯狂编译2个刻钟…...即使不能够经受那么些的话,照旧别尝试了,很遗憾,你连看到 Clang 真容的时机都未有┑┍

澳门新浦京娱乐场网站 2llvm大小

眼睛熊

1. 景况及企图

  • Windows 10
  • VisualStudio 2013
  • CMake 3.5
  • OpenCV大旨库源码
  • OpenCV contrib库源码
swift --version
Swift version 4.0-dev
Target: x86_64-unknown-linux-gnu

编写翻译源码

Clang 需求用 CMake 来编写翻译,CMake 的设置格局能够参见那篇小说:Mac 安装 CMake & CMake Command Line Tools,提出对 CMake 完全不打听的同室可以先补充有些 CMake 的基本知识,那样能更易于明白接下去要做的作业,CMake 的入门知识能够参照:CMake 入门实战

先是创设 LLVM 的源码路径及编写翻译路线:

cd /optsudo mkdir llvmsudo chown `whoami` llvm // 将 llvm 目录的所有者指定为当前用户cd llvmexport LLVM_HOME=`pwd` // 设置当前目录(/opt/llvm)为 LLVM_HOME 目录

接下去从 Github clone 源代码(注意这几条语句中的 release_60,在这段时间岁月2018.3.18时,笔者试过了 release_33、release_39,编写翻译出来的 Clang 插件在运营的时候都会报 NSUUID 的 Nullability 错误,应该是这个本子不帮忙 Objective-C 后来加的 Nullability 天性,所以笔者下载了现阶段风靡的 release_60 分支。一般的话,最新分支是合营已有特色的,所以优先下载最新分支,分支查看可以参考下图):

git clone -b release_60 git@github.com:llvm-mirror/llvm.git llvmgit clone -b release_60 git@github.com:llvm-mirror/clang.git llvm/tools/clanggit clone -b release_60 git@github.com:llvm-mirror/clang-tools-extra.git llvm/tools/clang/tools/extragit clone -b release_60 git@github.com:llvm-mirror/compiler-rt.git llvm/projects/compiler-rt

澳门新浦京娱乐场网站 3llvm最新分支.png

生成 Xcode 工程(也得以直接用命令行编写翻译,可是大家日常说不定看习贯了 Xcode 工程,所以用 Xcode 编写翻译相比较习贯)

mkdir llvm_build; cd llvm_buildcmake -G Xcode ../llvm -DCMAKE_BUILD_TYPE:STRING=MinSizeRel

转移的公文如下:

澳门新浦京娱乐场网站 4Xcode工程.png

展开 Xcode 工程,接纳自行创设 Schemes:

澳门新浦京娱乐场网站 5机动创设Schemes.png

接下来编写翻译 Clang 和 libClang(能够随时终止编写翻译,再度点击编写翻译会从上次终止的地点持续进行):

澳门新浦京娱乐场网站 6编译Clang和libClang

此地只怕需求1个多钟头技艺完结编写翻译,如无意外,编写翻译成功!

---------------- 本文 ---------------

专注:作者是以 Win10 VS2014 为例

内容:安装CMake、配置freeglut 、配置glew

版本:Window10、VS2015、CMake 3.8.0-rc-1、freeglut 3.0.0、glew 2.0.0

目标:使初学者不再为布局OpenGL相关情况烦扰

2. 编写翻译及安装

设置正视

yum install -y git clang gcc-c   uuid-devel libicu-devel icu libedit-devel libxml2-devel sqlite-devel swig python-devel ncurses-libs ncurses-devel pkgconfig libuuid-devel epel-release libbsd-devel 

更新CMake

CMake 3.4.3 版本有供给,必须比 CMake 3.4.3 高。CMake官网

# 下载
wget https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz
# 解压
tar -zxvf cmake-3.9.0.tar.gz
cd cmake-3.9.0
./bootstrap --prefix=/usr
make
sudo make install

编纂你的第叁个插件

本条插件达成的效益就是打字与印刷语法树上全部节点的类名以及父类名,创造 Clang 插件的完全步骤如下图:

澳门新浦京娱乐场网站 7创立插件.png

  1. 第一修改源代码目录 /opt/llvm/llvm/tools/clang/tools 下的 CMakeLists.txt 文件,增添多少个新的编写翻译指标,直接在 CMakeLists.txt 的最前边增添上一行,如下图:

    澳门新浦京娱乐场网站 8加多新的编写翻译指标.png

  2. 然后在 tools 目录下增添 MyPlugin 文件夹,文件夹里面新添三个文件 CMakeLists.txt 和 MyPlugin.cpp,这里先不上课具体文件中的内容,目标是想让插件跑起来,看到运营作效果果。

    CMakeLists.txt 文件如下:

    add_llvm_loadable_module(MyPlugin MyPlugin.cppPLUGIN_TOOL clang)if(LLVM_ENABLE_PLUGINS AND (WIN32 OR CYGWIN)) target_link_libraries(MyPlugin PRIVATE clangAST clangBasic clangFrontend clangLex LLVMSupport )endif()
    

    MyPlugin.cpp 文件如下:

    #include <iostream>#include "clang/AST/AST.h"#include "clang/AST/ASTConsumer.h"#include "clang/AST/RecursiveASTVisitor.h"#include "clang/Frontend/CompilerInstance.h"#include "clang/Frontend/FrontendPluginRegistry.h"using namespace clang;using namespace std;using namespace llvm;namespace MyPlugin{ class MyASTVisitor: public RecursiveASTVisitor < MyASTVisitor > {private: ASTContext *context;public: void setContext(ASTContext &context) { this->context = &context; } bool VisitDecl(Decl *decl) { if (isa < ObjCInterfaceDecl >  { ObjCInterfaceDecl *interDecl = (ObjCInterfaceDecl *)decl; if (interDecl->getSuperClass { string interName = interDecl->getNameAsString(); string superClassName = interDecl->getSuperClass()->getNameAsString(); cout << "-------- ClassName:" << interName << " superClassName:" << superClassName << endl; } } return true; } }; class MyASTConsumer: public ASTConsumer {private: MyASTVisitor visitor; void HandleTranslationUnit(ASTContext &context) { visitor.setContext; visitor.TraverseDecl(context.getTranslationUnitDecl; } }; class MyASTAction: public PluginASTAction {public: unique_ptr < ASTConsumer > CreateASTConsumer(CompilerInstance & Compiler, StringRef InFile) { return unique_ptr < MyASTConsumer > (new MyASTConsumer); } bool ParseArgs(const CompilerInstance &CI, const std::vector < std::string >& args) { return true; } };}static clang::FrontendPluginRegistry::Add< MyPlugin::MyASTAction > X("MyPlugin", "MyPlugin desc");
    

再次在 llvm_build 目录下 CMake 一下

cmake -G Xcode ../llvm -DCMAKE_BUILD_TYPE:STRING=MinSizeRel
  1. 下一场再次张开 LLVM.xcodeproj 工程,会开采多了八个 MyPlugin 的编写翻译目标,选中进行编写翻译。

澳门新浦京娱乐场网站 9编译myPlugin.png

编写翻译成功今后,就能够获得二个 MyPlugin.dylib 的 Clang 插件了~为了方便,小编将 MyPlugin.dylib 放在桌面上:

澳门新浦京娱乐场网站 10MyPlugin插件.png

预热

需求表明的是:OpenGL无需设置——它的落实早已在您的显卡中存在了。

想要开辟OpenGL程序,需求的只是它的一文山会海接口,而在真的开拓时,也没有需要在英特网找OpenGL的头文件,编写翻译器已经把关于OpenGL的头文件放置在某一个职分中了。

翻开OpenGL头文件的法子是用VS随意创造一工程(实例使用了预编写翻译头),然后引进头文件:

#include <glGL.h>

然后右键张开文书档案、再在对应的选项卡上右键张开文件所在的文本夹,如下所示:

澳门新浦京娱乐场网站 11

打开文书档案

澳门新浦京娱乐场网站 12

右键张开文件所在的文本夹

澳门新浦京娱乐场网站 13

查看OpenGL头文件

能够见到实例图片中,包罗那七个OpenGL的头文件:

GL.h:OpenGL所运用的函数和常量注解。
GLU.h(OpenGL实用库)所利用的函数和常量注明。

不等的连串,那个文件的不二等秘书技和名字(大小写)很恐怕是不一样的,所以并非纠结这些题目,因为您一旦直接引进这几个头文件,编写翻译则报错。

澳门新浦京娱乐场网站 14

直白引进OpenGL头文件,编写翻译报错

这时候先引进windows头文件就可以:

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO:  在此处引用程序需要的其他头文件
#include <Windows.h>
#include <glGL.h>
#include <glGLU.h>

可是,固然那样也并无法即时用代码成立多少个窗口来瞧一瞧,因为:

OpenGL自身并不包含任何窗口职责还是管理用户输入的函数。
OpenGL从没提供任何用于表达三维物人体模型型、可能读取图像文件(譬如JPEG文件)的操作。

故而热身实现。

2.1 编译

打开CMake GUI工具。

澳门新浦京娱乐场网站 15

CMake GUI

Where is the source code:选择D:/opencv或任何的解压目录。
Where to build the binaries:选择D:/opencv/build或相应的目录。
点击Congigure按键,CMake会本身举办配备。在弹出的对话框中挑选Visual Studio 12 2013

编写翻译进程中CMake会下载多少个公文,不过由于互联网难点,很难下载成功。
能够先从笔者的网盘分享(提取码xrkm)中下载那多少个文件,然后放在对应的opencv3rdparty文本夹下,然后进行Congigure操作。

千帆竞揭橥置实现后,在OPENCV_EXTREA_MODULES_PATH分选中精选D:/opencv_contrib/modules,再度点击Congigure拓展布置。
借使布置达成没不符合规律,则点击Generate张开更动。

下载斯威夫特的源代码

打开 找到 Cloned Repositories 创建 mkdir -p /usr/local/swift && cd /usr/local/swift 目录并进入swift

# 下载 swift-llvm
wget https://github.com/apple/swift-llvm/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P llvm
tar -zxvf swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -C src/llvm
# 下载 swift-clang
wget https://github.com/apple/swift-clang/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P clang
# 下载 swift-lldb
wget https://github.com/apple/swift-lldb/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P lldb
# 下载 swift-cmark
wget https://github.com/apple/swift-cmark/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P cmark
# 下载 swift
wget https://github.com/apple/swift/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P swift
# 下载 ninja
wget https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz -P ninja

地点运用 开辟板编写翻译花了八个钟头,后边用 released 版本编写翻译,警告少了成都百货上千,而且编写翻译快了一定多呢,所以您须要采纳三个平安的 released 版本安装。

wget https://github.com/ninja-build/ninja/archive/v1.7.2.tar.gz -P ninja
wget https://github.com/apple/swift/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz  -P swift
wget https://github.com/apple/swift-cmark/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz  -P cmark
wget https://github.com/apple/swift-lldb/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P lldb
wget https://github.com/apple/swift-clang/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P clang
wget https://github.com/apple/swift-llvm/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-29-a.tar.gz -P llvm

wget https://github.com/apple/swift-corelibs-libdispatch/archive/swift-DEVELOPMENT-SNAPSHOT-2017-07-30-a.tar.gz -P swift-corelibs-libdispatch 

设置之后的目录结构

swift/
└── src
    ├── clang
    ├── cmark
    ├── lldb
    ├── llvm
    ├── ninja
    ├── swift-corelibs-libdispatch 
    └── swift

选取插件

率先用命令行对单文件测试一下正要生成的 Clang 插件是还是不是正确,新建三个测试用文件 test.m 放在桌面,test.m 如下:

#import<UIKit/UIKit.h>@interface ViewController : UIViewController@end@implementation ViewController- (instancetype)init{ if(self = [super init]){ } return self;}@end

前日本身的 test.m 和 MyPlugin.dylib 都在桌面上了(当然也得以放在区别的目录下,只要在待会用到那多少个文件的地点内定各自的相对路线就行,这里是为了有利于叙述)

澳门新浦京娱乐场网站 16文件结构

随即命令行 cd 到桌面,然后实行以下命令就足以观望结果了:

/opt/llvm/llvm_build/Debug/bin/clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.2.sdk -Xclang -load -Xclang ./MyPlugin.dylib -Xclang -add-plugin -Xclang MyPlugin -c ./test.m

注意:

  1. 本人编译出来的 clang 在 /opt/llvm/llvm_2上编写翻译安装Swift,VS2016开销情形陈设。build/Debug/bin/clang 目录中,倘使你与自家的门路不相同则内定为您对号入座的门道

  2. 在作者写那篇小说时 Xcode 版本是9.2,对应的是 索爱Simulator11.2.sdk,你要求进入该目录查看你的 sdk 版本

如无意外,命令行中会现出第一次全国代表大会堆输出:

澳门新浦京娱乐场网站 17命令行输出

接下去讲怎么样在 Xcode 使用大家正好编写翻译出来的插件(随着 Xcode 变得封闭,插件挂载到 Xcode 上运营在以后的本子中恐怕会被禁止)。

  1. 先是 hack Xcode,才具使 Xcode 指向我们同甘共苦编写翻译的 Clang:

下载 Xcode哈克ing.zip 并解压,里面有 哈克edBuildSystem.xcspec 和 哈克edClang.xcplugin 五个公文,这里可能必要修改一下 哈克edClang.xcplugin/Contents/Resources/哈克edClang.xcspec 文件,将 ExecPath 的值修改为你编写翻译出来的 Clang 的目录:

澳门新浦京娱乐场网站 18修改HackedClang.xcspec

然后 cd 到解压的 Xcode哈克ing 目录,将那多少个公文用命令行移动到对应的目录下:

sudo mv HackedClang.xcplugin `xcode-select -print-path`/../PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-inssudo mv HackedBuildSystem.xcspec `xcode-select -print-path`/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications

  1. 下一场重启 Xcode,点击 Target 的 Build Settings,修改 Compiler for C/C /Objective-C 项为 Clang LLVM Trunk(不举行第1步中 hack Xcode 操作的话是不会有其一选项的)

澳门新浦京娱乐场网站 19Complier.png

然后修改 OTHE奥迪Q5_CFLAGS 选项:

澳门新浦京娱乐场网站 20OTHER_CFLAGS.png

-Xclang -load -Xclang /Users/Vernon/Desktop/MyPlugin.dylib -Xclang -add-plugin -Xclang MyPlugin

注意

  1. 将 /Users/弗恩on/Desktop/MyPlugin.dylib 修改为你转移的插件对应的目录
  2. 譬如编写翻译中出现一大堆系统库的 symbol not found 错误的话,能够在上述命令的最终手动内定你的 SDK 目录,加上那句:-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/One plusSimulator.platform/Developer/SDKs/一加Simulator11.2.sdk
  1. 终极编写翻译你的项目,然后飞快键 Command 9 跳到 Show the Report navigator,选中刚刚的编写翻译报告,注意下图中每一种文件右上角都有能够点击张开的开关,张开后就能够看到我们插件的出口了。Nice~

    澳门新浦京娱乐场网站 21查阅结果

准备

OpenGL既然未有包蕴这多少个东西,那么我们自然供给用第三方软件库来成功这么些职能,举例创制窗口、接受鼠标和键盘事件等。备选的第三方软件库还非得和OpenGL一样支持跨平台移植,于是出现四个大家都在用的第三方软件库:freeGLUT 和 GLEW。

FreeGLUT 是GLUT的叁个全然开源代替库。
GLEW是三个简易的OpenGL增加工具库

本文与其说是OpenGL的付出情况布置教程,比不上说是OpenGL相关的第三方软件库的开采条件铺排教程。

2.2 安装

进入D:/opencv/build文件夹,张开新变化的OpenCV.sln,分别在Debug和Release格局下Rebuild整个solution,然后在CMakeTargets工程中的INSTALL上右键选拔Project Only->Build Only INSTALL
D:/opencv/build/install文件夹上边就能够生成编写翻译好的opencv文件。

编写翻译安装ninja

yum install re2c -y # re2c 是一个用于编写快速灵活的词法分析器的工具

编译

./configure.py --bootstrap
cp ninja /usr/local/bin/

结语

文章非常长,只是那就像轻易的长河也花了本人贰个多星期的业余时间,写下这么些种类文章一是为着记录本身那钻研的进度,今后也可查询,二是目的在于即便有人能观察那篇拙文能够省下一些年华,更加快的踏进 LLVM 和 Clang 的社会风气研究。

接下去会依照笔者的私有必要尝试给 Clang 加多自定义的 attribute,假设持有体会,会撰写分享,敬请期待~

PS:若是是在 Xcode 10 编写翻译蒙受难题的话能够参照他事他说加以侦察那篇小说:

PPS:笔者建了两个 Clang & LLVM 微信调换群,能够调换 Clang 相关题材、iOS 相关难题、发招聘新闻,拒绝广告、拒绝刷屏。想要插手的能够加作者微信拉你进群~

澳门新浦京娱乐场网站 22微信二维码

下载

GLEW只要求去官方网址下载最新版本就能够了,里面包蕴了相关的头文件和编写翻译好的lib、dll文件。

而FreeGLUT在官方网址中下载到的文书须要在该地越来越编译,手艺被我们使用,所以本文使用CMake来帮衬大家编写翻译FreeGLUT。

种种官方网站地址
OpenGL: https://www.opengl.org/
FreeGLUT: http://freeglut.sourceforge.net/
GLEW: http://glew.sourceforge.net/
CMake: https://cmake.org/

作者提前计划了相应文件,不想麻烦的童鞋能够在这里下载它们

3. 系统布局

在VS的Property Manager中找到Microsift.Cpp.Win32.user安排文件,修改个中的装置,就无须每一回新建几个门类就要改包罗目录和库目录等了。
Include Directories添加:

  • D:opencvbuildinstallinclude
  • D:opencvbuildinstallincludeopencv
  • D:opencvbuildinstall2上编写翻译安装Swift,VS2016开销情形陈设。includeopencv2

Library Directories添加:

  • D:opencvbuildinstallx86vc12lib

Additional Dependencies添加:

  • D:opencvbuildinstallx86vc12lib*.lib

编译Swift编译器

在文件 vi /etc/profile 增多底下代码,增添实现之后,source /etc/profile 更换立即生效。

export SWIFT_SOURCE_ROOT=/usr/local/swift/src

进入cd /usr/local/swift/src/swift/utils/ 目录,运行脚本

# ./build-script -R
# 上面命令会报错,建议使用下面命令
# https://github.com/apple/swift/pull/3594#issuecomment-234169759

./build-script --libdispatch
./build-script --libdispatch --extra-cmake-options="-DSWIFT_BUILD_SOURCEKIT:BOOL=TRUE"

swap区缺乏大的由来。导致clang kernel opps

clang: error: unable to execute command: Killed
clang: error: linker command failed due to signal (use -v to see invocation)

请加大分区:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

开机自动挂载swap:
利用 vi 或 nano 在 /etc/fstab 文件底部增多如下内容:

/swapfile none swap sw 0 0

libatomic不存在

# 错误
/usr/bin/ld: cannot find /usr/lib64/libatomic.so.1.0.0

消除办法,building swift on centos。

# 下载
# 这里https://pkgs.org/download/libatomic找对应的rpm下载地址
wget --no-check-certificate -O /etc/yum.repos.d/libatomic-4.8.5-11.el7.x86_64.rpm ftp://ftp.pbone.net/mirror/ftp.centos.org/7.3.1611/os/x86_64/Packages/libatomic-4.8.5-11.el7.x86_64.rpm

# 安装
rpm -ivh libatomic-4.8.5-11.el7.x86_64.rpm

编写翻译实现,设置条件消息 vi ~/.bash_profile

PATH=$PATH:/usr/local/swift/src/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin

立即生效source ~/.bash_profile

下载CMake:

澳门新浦京娱乐场网站 23

打开CMake官网,点击Download

澳门新浦京娱乐场网站 24

下拉页面

澳门新浦京娱乐场网站 25

依照系统的两样,采纳相应的安装文件,点击就可以下载(小编选用了第二个红框选中的文件)。

澳门新浦京娱乐场网站 26

下载完结

4. 测试

OpenCV官方文书档案中关于contrib modules有一类别教程,在那之中有二个是有关Tracker模块的,用来做靶子跟踪。以此为例来测试contrib modules的调用。
为了方便运维,对源码做了多少改造:

#include "stdafx.h"
#include "core/core.hpp"
#include "highgui/highgui.hpp"
#include "opencv2/tracking.hpp"

using namespace cv;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    Rect2d roi;
    Mat frame;
    Ptr<Tracker> tracker = Tracker::create("KCF");
    VideoCapture cap("video.avi");
    int fps = cap.get(CAP_PROP_FPS);
    VideoWriter writer("r.avi", CV_FOURCC('D', 'I', 'V', 'X'), fps, Size(704, 576));
    cap >> frame;
    roi = Rect2d(335, 160, 75, 75);
    tracker->init(frame, roi);
    for (;;)
    {
        cap >> frame;
        tracker->update(frame, roi);
        rectangle(frame, roi, Scalar(255, 0, 0), 2, 1);
        writer << frame;
        imshow("tracker", frame);
        if (waitKey(1) == 27)
        {
            cap.release();
            writer.release();
            break;
        }
    }
    return 0;
}

最后的运营效果如下,不管目的追踪的法力怎样,至少程序是能够运作的了。

澳门新浦京娱乐场网站 27

钉住作用

HellWorld

添加 touch ~/HelloWorld.swift 文件,加多底下代码测试

print("Hello world!")

编译 swift 文件

swiftc ~/HelloWorld.swift -o ~/Hello

运行 ~/Hello 输出 Hello world!

居功至伟告成!

下载FreeGLUT:

澳门新浦京娱乐场网站 28

打开FreeGLUT官网,点击Download

澳门新浦京娱乐场网站 29

入选最新牢固版,点击就可以下载

Web框架

  • Vapor
  • Perfect
  • Kitura
  • Zewo
下载GLEW:

澳门新浦京娱乐场网站 30

开发GLEW官方网址,点击二进制文件就可以下载

下载达成

澳门新浦京娱乐场网站 31

终极文件

澳门新浦京娱乐场网站 32

谈到底文件

安装CMake

举重若轻特别的,一路next下来就可以。

澳门新浦京娱乐场网站 33

点击next

澳门新浦京娱乐场网站 34

勾选 I accept... ,点击next

澳门新浦京娱乐场网站 35

点击next

澳门新浦京娱乐场网站 36

点击next

澳门新浦京娱乐场网站 37

点击Install,若是弹出权力询问,选用是就可以。

澳门新浦京娱乐场网站 38

点击Finish,安装实现

编译FreeGLUT文件

澳门新浦京娱乐场网站,解压freeglut-3.0.0.tar,并创设CMake编写翻译文件输出文件夹:

澳门新浦京娱乐场网站 39

解压freeglut-3.0.0.tar,并创办CMake编写翻译文件输出文件夹

打开CMake(cmake-gui), 如下图二者之一:

澳门新浦京娱乐场网站 40

打开CMake(cmake-gui)

澳门新浦京娱乐场网站 41

打开CMake(cmake-gui)

在 where is the source code 中甄选解压freeglut的目录,在意那一个目录内富含了CMakeLists.txt

在where to build the binaries 中接纳此前创制的CMake编写翻译文件输出文件夹:

澳门新浦京娱乐场网站 42

点击箭头指向的按键选用相应的文件夹

澳门新浦京娱乐场网站 43

freeglut解压的公文夹,注意该公文夹内涵盖了CMakeLists.txt

点击Configure:

澳门新浦京娱乐场网站 44

点击Configure

澳门新浦京娱乐场网站 45

弹出的窗口中甄选相应的VS版本,我选拔的是VS二〇一五,点击Finish

澳门新浦京娱乐场网站 46

等候完结,会现身 Configuring done 字样

小心,假设现身错误提醒,则先点击File->Delete Cache之后,再点击Configure,然后选拔分化的VS版本重试(前提是您的微管理器确实安装了该版本的VS):

澳门新浦京娱乐场网站 47

若是出现错误提醒

澳门新浦京娱乐场网站 48

点击Delete Cache之后,再点击Configure,然后选取分化的VS版本重试

Configur达成之后(小心勾选下图列出的项,特别是FREEGLUT_BUILD_SHARED_LIBS 和FREEGLUT_BULID_STATIC_LIBS),点击Generate生成VS工程文件:

澳门新浦京娱乐场网站 49

点击Generate

澳门新浦京娱乐场网站 50

Generate成功

开荒CMake输出文件目录,找到freeglut.sln文件,双击展开:

澳门新浦京娱乐场网站 51

开辟CMake输出文件目录

澳门新浦京娱乐场网站 52

双击张开freeglut.sln

澳门新浦京娱乐场网站 53

等候VS二零一六加载成功

澳门新浦京娱乐场网站 54

小心测试工程遭遇:Dubug & Win32

点击生成->生成化解措施:

澳门新浦京娱乐场网站 55

编写翻译工程

澳门新浦京娱乐场网站 56

等候编写翻译完结

留神此时编写翻译出来的是debug、win32本子的freeglut3.0.0文件——必要release版本,需求在Release下,再一次编写翻译一下就可以(可是,原本的33人文件就被遮住掉了):

澳门新浦京娱乐场网站 57

在意此时工程境遇:Release & Win32

编写翻译完结后,再次展开工程所在文件夹(即CMake输出文件夹);此时一度编写翻译好了的freeglut文件就存放在lib、bin文件夹里面:

澳门新浦京娱乐场网站 58

此刻编译好了的freeglut文件就存放在lib、bin文件夹里面

即便急需63人lib文件和dll文件,只需重新使用CMake 编写翻译生成,只可是选取编写翻译器时精选Win64而已:

澳门新浦京娱乐场网站 59

CMake生成Win64 VS工程文件

澳门新浦京娱乐场网站 60

Debug & 陆十六人下编写翻译工程

澳门新浦京娱乐场网站 61

Release & 60位下编写翻译工程

迄今,计划干活完结,各类文件皆已盘算稳妥

澳门新浦京娱乐场网站 62

glew、freeglut所需的文本。注意作者并从未将它们的lib、dll、.h文件摘出来存放在四个独门的文件夹中,但前边你领悟了必需什么文件从此,就能够如此做了。

以下内容未包蕴CMake生成的陆拾三位工程文件;作者生成的六十四人的freeglut VS工程文件夹为:freeglut 2

澳门新浦京娱乐场网站 63

寄存64人 freegult 的 lib 文件和 dll 所在的文本夹

它编写翻译出来的64 freegult 的 lib文件和 dll 文件在 下一篇中才会选拔到。

搭建OpenGL开拓条件

始建贰个C 调整台工程,然后先运转或编写翻译下程序:

澳门新浦京娱乐场网站 64

创造一个C 调节台工程,名称随便取。

澳门新浦京娱乐场网站 65

作者选用了私下认可设置,即蕴含了预编写翻译头

澳门新浦京娱乐场网站 66

运行或编写翻译刚刚创立的工程

布置包括目录、库目录

布署VS包含目录和库目录时,它们各自都亟需设置八个路子——glew的include路线、freeglut的include路径以及glew的lib路线和freeglut的lib路线
点击项目->属性->VC 目录:

澳门新浦京娱乐场网站 67

开垦项目标属性

澳门新浦京娱乐场网站 68

找到VC 目录的包含目录和库目录

澳门新浦京娱乐场网站 69

点击编辑

瞩目,这里的盈盈目录简单是说便是大家须要包罗.h文件的公文夹,你也足以在把那个.h直接助长到工程中:

澳门新浦京娱乐场网站 70

布署包罗目录

澳门新浦京娱乐场网站 71

那是glew的头文件所在目录,你能够张开文件夹去探访都是哪些.h文件。

澳门新浦京娱乐场网站 72

那是freeglut的头文件所在目录,你能够打开文件夹去探视都以哪些.h文件。

澳门新浦京娱乐场网站 73

饱含目录配置实现,点击鲜明

澳门新浦京娱乐场网站 74

配置库目录

澳门新浦京娱乐场网站 75

那是freeglut所急需的库文件路线,你能够看看freeglut都急需怎样 .lib文件

专注,freegult的库文件(.lib)文件是你和煦用CMake、VS二零一五末段编写翻译出来的,必要差别版本的 .lib 文件,只要求退换好后,重新编写翻译就可以。

地点已经详细的教给你钓鱼的秘籍,从此freeglut版本更新后,比方freegult 3.1.0,只需重新CMake、VS二零一五编译就可以

澳门新浦京娱乐场网站 76

那是glew所须求的库文件路径,你能够到当中看看glew都供给哪些 .lib 文件

澳门新浦京娱乐场网站 77

库目录配置完成

显式包括glew32.lib文件——以增多附加注重项的艺术:

澳门新浦京娱乐场网站 78

点击编辑

澳门新浦京娱乐场网站 79

输入glew.lib

澳门新浦京娱乐场网站 80

各种点击应用、鲜明,库文件配置达成

程序运维所须求的 .dll 链接文件:

澳门新浦京娱乐场网站 81

这是glew的.dll文件所在路线

澳门新浦京娱乐场网站 82

那是freeglut的.dll文件所在路线,注意留存debug和release版本的 .dll 名称上的差异,你能够自个儿到 ../bin/Release文件夹里面看看。

把那五个.dll文件复制到exe同目录下:

澳门新浦京娱乐场网站 83

把.dll复制到大家的exe实行顺序的同目录下

到现在,OpenGL 的费用环境安排实现。

小心,本文使用了一种比较费心的安顿格局,今后遭受任何的第三方库也能够这么安插。

这种办法比较安全,纵然配置错误、复制错文件、误删文件,相比较轻便苏醒,最坏的情景也可是是去除全数工程,重来贰回,而不会对系统变成危机,在支付进度中埋下未知错误。

理当如此有一种暂劳永逸的章程来安插OpenGL开拓条件,那等到大家测试成功之后再介绍,可是这种艺术不太安全,请您在确认保障您领悟您在操作什么的时候再利用在这种一劳永逸的形式。

测试OpenGL开采条件

转车下文,测试大家配备好了的开支景况

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:2上编写翻译安装Swift,VS2016开销情形陈设