您的位置:新葡亰496net > 奥门新萄京娱乐场 > 新葡亰496net:2上编译安装Swift,详细图文

新葡亰496net:2上编译安装Swift,详细图文

发布时间:2019-07-21 05:09编辑:奥门新萄京娱乐场浏览(182)

    苹果提供 Ubuntu上构建Swift 的课程,通过那一个课程小编尝试使用CentOS7.2上嘲讽一把。近日已经打响在CentOS7.2上班成功安装 swift 4.0

    Clang 之旅种类文章:Clang 之旅--使用 Xcode 开垦 Clang 插件Clang 之旅--[翻译]增多自定义的 attributeClang 之旅--完成一个自定义检查规范的 Clang 插件

    新葡亰496net 1

    从今步入3.X时期以往,OpenCV将代码库分成了两有的,分别是平安的为主职能库和考试性质的contrib库。
    还要从3.1自此,编译好的版本中就一向不现存的x86平台的库了,想用就不可能不和煦从源码编写翻译。
    此前都是直接下载编写翻译好的本子。为了感受完整版本的OpenCV,也为了跟进后续的本子更新,只能硬着头皮来学一下怎么从源码安装OpenCV了。

    前言

    近年在跟那多少个的闲谈中谈到了一个对比奇特的必要:是还是不是有艺术在编写翻译阶段检查某些方法的参数与再次回到值的品类一样,借使类型分裂样的话能抛出编写翻译错误的提醒。那不啻早已不是 Objective-C 或然 斯维夫特的言语语法自身所能化解的了,老大还引导了足以从编写翻译器等尾巴部分中举办探究。于是,小编踏进了 Clang 和 LLVM 的大门。

    本身盘算将 Clang 的切磋心得分为几篇小说来写,那是 Clang 之旅的率先篇,主要讲什么用 Xcode 编写翻译 Clang,以及落到实处一个简约的 Clang 插件并挂载到 Xcode 中加入编写翻译流程,算是走入 Clang 的要诀。只是,那门槛就狠狠地让本人吃了痛处,谷歌(Google)找到好几篇博客讲怎么编译 Clang 的,可是也可能有一点新年了,版本相比旧,编写翻译出来的 Clang 不可能运作在后日的系统上;还有一对写的可比含糊,漏了某个关键步骤,导致花了几许个小时跟着教程做下去最后依然一堆error;并且试错的资本依然相比高的,下载的源码有1G多(思量从 Github 下载的进程,须要挂个代理),完整编写翻译出来有20G左右,作者的15款 Macbook Pro 差十分的少必要疯狂编写翻译2个小时…...假使无法承受那几个的话,依然别尝试了,很不满,你连看到 Clang 真容的火候都未有┑┍

    新葡亰496net 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
    

    新葡亰496net 3llvm最新分支.png

    生成 Xcode 工程(也能够一直用命令行编写翻译,不过大家平时说不定看习于旧贯了 Xcode 工程,所以用 Xcode 编写翻译比较习贯)

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

    改造的文件如下:

    新葡亰496net 4Xcode工程.png

    开拓 Xcode 工程,选拔自动创造 Schemes:

    新葡亰496net 5电动创立Schemes.png

    下一场编写翻译 Clang 和 libClang(可以每31日终止编写翻译,再一次点击编写翻译会从上次终止的地点三翻五次举办):

    新葡亰496net 6编译Clang和libClang

    这里只怕须要1个多小时工夫成就编写翻译,如无意外,编写翻译成功!

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

    注意:作者是以 Win10 VS二零一五 为例

    内容:安装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 插件的总体步骤如下图:

    新葡亰496net 7开创插件.png

    1. 率先修改源代码目录 /opt/llvm/llvm/tools/clang/tools 下的 CMakeLists.txt 文件,增加三个新的编写翻译目的,间接在 CMakeLists.txt 的末梢面增加上一行,如下图:

      新葡亰496net 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 的编写翻译指标,选中实行编写翻译。

    新葡亰496net 9编译myPlugin.png

    编写翻译成功以往,就能够猎取二个 MyPlugin.dylib 的 Clang 插件了~为了方便,笔者将 MyPlugin.dylib 放在桌面上:

    新葡亰496net 10MyPlugin插件.png

    预热

    亟需验证的是:OpenGL不须求设置——它的兑现早已在你的显卡中存在了。

    想要开拓OpenGL程序,供给的只是它的一二种接口,而在真的开垦时,也无需在网络找OpenGL的头文件,编写翻译器已经把有关OpenGL的头文件放置在某二个任务中了。

    查阅OpenGL头文件的不二秘诀是用VS随意成立一工程(实例使用了预编写翻译头),然后引进头文件:

    #include <glGL.h>
    

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

    新葡亰496net 11

    展开文书档案

    新葡亰496net 12

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

    新葡亰496net 13

    查看OpenGL头文件

    能够见到实例图片中,饱含那八个OpenGL的头文件:

    GL.h:OpenGL所选取的函数和常量注脚。
    GLU.h(OpenGL实用库)所采纳的函数和常量表明。

    不等的系统,那些文件的门路和名字(大小写)很可能是见仁见智的,所以不要纠结那个主题素材,因为您只要直接引进那几个头文件,编写翻译则报错。

    新葡亰496net 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工具。

    新葡亰496net 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张开改造。

    下载Swift的源代码

    打开 找到 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 都在桌面上了(当然也能够置身差异的目录下,只要在待会用到那七个文件的地点钦点各自的相对路线就行,这里是为着便于陈诉)

    新葡亰496net 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_build/Debug/bin/clang 目录中,假若你与小编的路子不等同则钦点为你对号入座的路线

    2. 在自个儿写那篇小说时 Xcode 版本是9.2,对应的是 BlackBerrySimulator11.2.sdk,你供给步入该目录查看你的 sdk 版本

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

    新葡亰496net 17命令行输出

    接下去讲怎么在 Xcode 使用大家刚刚编写翻译出来的插件(随着 Xcode 变得密闭,插件挂载到 Xcode 上运行在现在的本子中只怕会被禁止)。

    1. 新葡亰496net:2上编译安装Swift,详细图文。先是 hack Xcode,能力使 Xcode 指向大家和好编写翻译的 Clang:

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

    新葡亰496net 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 操作的话是不会有其一选项的)

    新葡亰496net 19Complier.png

    下一场修改 OTHEKuga_CFLAGS 选项:

    新葡亰496net 20OTHER_CFLAGS.png

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

    注意

    1. 将 /Users/Vernon/Desktop/MyPlugin.dylib 修改为你转移的插件对应的目录
    2. 假定编译中冒出一大堆系统库的 symbol not found 错误的话,能够在上述命令的结尾手动钦命你的 SDK 目录,加上这句:-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/华为Simulator.platform/Developer/SDKs/HUAWEISimulator11.2.sdk
    1. 谈起底编写翻译你的门类,然后急忙键 Command 9 跳到 Show the Report navigator,选中刚刚的编写翻译报告,注意下图中各种文件右上角都有能够点击打开的按键,展开后就能够观看我们插件的出口了。Nice~

      新葡亰496net 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 相关难点、发招聘消息,拒绝广告、拒绝刷屏。想要参与的能够加作者微信拉你进群~

    新葡亰496net 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:opencvbuildinstallincludeopencv2

    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:

    新葡亰496net 23

    打开CMake官网,点击Download

    新葡亰496net 24

    下拉页面

    新葡亰496net 25

    基于系统的差异,选取相应的安装文件,点击就可以下载(作者选择了第三个红框选中的文件)。

    新葡亰496net 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;
    }
    

    末段的运行效果如下,不管指标跟踪的效用怎么样,至少程序是足以运作的了。

    新葡亰496net 27

    追踪成效

    HellWorld

    添加 touch ~/HelloWorld.swift 文件,增加上边代码测量检验

    print("Hello world!")
    

    编译 swift 文件

    swiftc ~/HelloWorld.swift -o ~/Hello
    

    运行 ~/Hello 输出 Hello world!

    功勋卓著告成!

    下载FreeGLUT:

    新葡亰496net 28

    打开FreeGLUT官网,点击Download

    新葡亰496net 29

    入选最新坚固版,点击就能够下载

    Web框架

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

    新葡亰496net 30

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

    下载实现

    新葡亰496net 31

    末段文件

    新葡亰496net 32

    最后文件

    安装CMake

    不要紧极度的,一路next下来就可以。

    新葡亰496net 33

    点击next

    新葡亰496net 34

    勾选 I accept... ,点击next

    新葡亰496net 35

    点击next

    新葡亰496net 36

    点击next

    新葡亰496net 37

    点击Install,假设弹出权力询问,选取是就可以。

    新葡亰496net 38

    点击Finish,安装到位

    编译FreeGLUT文件

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

    新葡亰496net 39

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

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

    新葡亰496net 40

    打开CMake(cmake-gui)

    新葡亰496net 41

    打开CMake(cmake-gui)

    在 where is the source code 中选拔解压freeglut的目录,只顾那几个目录内富含了CMakeLists.txt

    在where to build the binaries 中采纳此前成立的CMake编写翻译文件输出文件夹:

    新葡亰496net 42

    点击箭头指向的开关接纳相应的文件夹

    新葡亰496net 43

    freeglut解压的文件夹,注意该公文夹内含有了CMakeLists.txt

    点击Configure:

    新葡亰496net 44

    点击Configure

    新葡亰496net 45

    弹出的窗口中挑选相应的VS版本,小编选拔的是VS2014,点击Finish

    新葡亰496net 46

    等候达成,会见世 Configuring done 字样

    注意,假设出现谬误提示,则先点击File->Delete Cache之后,再点击Configure,然后接纳不一样的VS版本重试(前提是您的Computer确实安装了该版本的VS):

    新葡亰496net 47

    假如出现错误提醒

    新葡亰496net 48

    点击Delete Cache之后,再点击Configure,然后选拔不一致的VS版本重试

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

    新葡亰496net 49

    点击Generate

    新葡亰496net 50

    Generate成功

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

    新葡亰496net 51

    展开CMake输出文件目录

    新葡亰496net 52

    双击展开freeglut.sln

    新葡亰496net 53

    等候VS二零一六加载成功

    新葡亰496net 54

    瞩目测量检验工程遇到:Dubug & Win32

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

    新葡亰496net 55

    编写翻译工程

    新葡亰496net 56

    等候编写翻译完毕

    专注此时编写翻译出来的是debug、win32本子的freeglut3.0.0文件——须要release版本,须求在Release下,再度编译一下就可以(可是,原本的三十位文件就被遮住掉了):

    新葡亰496net 57

    注意此时工程遇到:Release & Win32

    编写翻译达成后,再度展开工程所在文件夹(即CMake输出文件夹);此时已经编写翻译好了的freeglut文件就寄放在lib、bin文件夹里面:

    新葡亰496net 58

    那儿编写翻译好了的freeglut文件就贮存在lib、bin文件夹里面

    假诺要求62位lib文件和dll文件,只需再次使用CMake 编写翻译生成,只然而采取编写翻译器时选拔Win64而已:

    新葡亰496net 59

    CMake生成Win64 VS工程文件

    新葡亰496net 60

    Debug & 六19位下编写翻译工程

    新葡亰496net 61

    Release & 62个人下编译工程

    至此,准备工作做到,各个文件皆已希图妥帖

    新葡亰496net 62

    glew、freeglut所需的公文。注意小编并从未将它们的lib、dll、.h文件摘出来寄放在二个单身的文本夹中,但背后你了然了必需什么文件之后,就足以这么做了。

    以下内容未满含CMake生成的陆十个人工程文件;作者生成的62位的freeglut VS工程文件夹为:freeglut 2

    新葡亰496net 63

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

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

    搭建OpenGL开垦条件

    创建多个C 调整台工程,然后先运营或编写翻译下程序:

    新葡亰496net 64

    创设二个C 调控台工程,名称随便取。

    新葡亰496net 65

    笔者选拔了暗中同意设置,即含有了预编写翻译头

    新葡亰496net 66

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

    配备满含目录、库目录

    配置VS满含目录和库目录时,它们分别都亟待设置五个路子——glew的include路线、freeglut的include路线以及glew的lib路径和freeglut的lib路线
    点击项目->属性->VC 目录:

    新葡亰496net 67

    开采项目标性质

    新葡亰496net 68

    找到VC 目录的盈盈目录和库目录

    新葡亰496net 69

    点击编辑

    瞩目,这里的涵盖目录轻易是说便是大家要求满含.h文件的公文夹,你也可以在把这几个.h间接抬高到工程中:

    新葡亰496net 70

    铺排包蕴目录

    新葡亰496net 71

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

    新葡亰496net 72

    这是freeglut的头文件所在目录,你能够展开文件夹去看看都以哪些.h文件。

    新葡亰496net 73

    带有目录配置完结,点击鲜明

    新葡亰496net 74

    配置库目录

    新葡亰496net 75

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

    留心,freegult的库文件(.lib)文件是你和谐用CMake、VS贰零壹肆最终编译出来的,需求不一样版本的 .lib 文件,只须求变越来越好后,重新编写翻译就可以。

    地点已经详细的教给你钓鱼的办法,此后freeglut版本更新后,比如freegult 3.1.0,只需重新CMake、VS二零一四编写翻译就能够

    新葡亰496net 76

    那是glew所须求的库文件路径,你能够到在那之中看看glew都急需怎样 .lib 文件

    新葡亰496net 77

    库目录配置实现

    显式满含glew32.lib文件——以增加附加注重项的秘诀:

    新葡亰496net 78

    点击编辑

    新葡亰496net 79

    输入glew.lib

    新葡亰496net 80

    依次点击应用、分明,库文件配置实现

    程序运转所至关重要的 .dll 链接文件:

    新葡亰496net 81

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

    新葡亰496net 82

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

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

    新葡亰496net 83

    把.dll复制到我们的exe执行顺序的同目录下

    从那之后,OpenGL 的开拓条件布署实现。

    在意,本文使用了一种相比较劳碌的配备格局,以后境遇其余的第三方库也可以这么安排。

    这种艺术相比较安全,就算配置错误、复制错文件、误删文件,比较便于恢复生机,最坏的景况也不过是剔除全体工程,重来一次,而不会对系统产生侵害,在付出进程中埋下未知错误。

    理之当然有一种一劳永逸的办法来安排OpenGL开荒条件,那等到大家测量试验成功今后再介绍,然则这种方法不太安全,请您在保障您知道你在操作什么的时候再使用在这种一劳永逸的格局。

    测验OpenGL开辟条件

    中转下文,测验大家安插好了的付出意况

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:新葡亰496net:2上编译安装Swift,详细图文

    关键词:

上一篇:没有了

下一篇:没有了