Ubuntu下通过CMake文件编译CUDA+OpenCV代码操作步骤
在 CUDA_Test 工程中,CUDA测试代码之前仅支持在Windows10 + VS2013编译,今天在Ubuntu 14.04下写了一个CMakeLists.txt文件,支持在Linux下也可以通过CMake编译CUDA_Test工程,CMakeLists.txt文件内容如下:
# CMake file for CUDA_Test# 设定依赖的CMake版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
# 指定项目名称
PROJECT(CUDA_Test)# 搜索指定的OpenCV外部依赖库头文件和库文件位置
FIND_PACKAGE(OpenCV 2)
# 搜索指定的CUDA外部依赖库头文件和库文件位置
FIND_PACKAGE(CUDA)# 打印相关信息, CMAKE_CURRENT_SOURCE_DIR指的是当前处理的CMakeLists.txt所在的路径
MESSAGE(STATUS "current path: ${CMAKE_CURRENT_SOURCE_DIR}")# 定义用户自定义变量
SET(PATH_CPP_FILES ./../../demo/CUDA_Test)
#MESSAGE(STATUS "cpp files path: ${PATH_CPP_FILES}")
SET(PATH_CU_FILES ./../../demo/CUDA_Test)# 递归查询所有匹配的文件:*.cpp和*.cu
FILE(GLOB_RECURSE CPP_LIST ${PATH_CPP_FILES}/*.cpp)
FILE(GLOB_RECURSE CU_LIST ${PATH_CU_FILES}/*.cu)
#MESSAGE(STATUS "cpp list: ${CPP_LIST}")
#MESSAGE(STATUS "cu list: ${CU_LIST}")# 使CMake支持C++11特性
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu++0x")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")# 指定CUDA头文件的搜索路径
INCLUDE_DIRECTORIES(/usr/local/cuda-8.0/include)
# 指定OpenCV头文件搜索路径
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#MESSAGE(STATUS "opencv include directory: ${OpenCV_INCLUDE_DIRS}")# 使CUDA NVCC 编译器支持C++11特性
LIST(APPEND CUDA_NVCC_FLAGS -std=c++11;-O2)
LIST(APPEND CUDA_NVCC_FLAGS -Xcompiler;-fPIC)SET(CUDA_PROPAGATE_HOST_FLAGS OFF)LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_50,code=sm_50)
LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_60,code=sm_60)# 编译可执行程序,即生成可执行文件CUDA_Test
#ADD_EXECUTABLE(CUDA_Test ${CPP_LIST} ${CU_LIST}) # 不包括编译*.cu文件,需要使用CUDA_ADD_EXECUTABLE命令
CUDA_ADD_EXECUTABLE(CUDA_Test ${CPP_LIST} ${CU_LIST})
# 用来为target添加需要链接的共享库,指定工程所用的依赖库,包括动态库和静态库
TARGET_LINK_LIBRARIES(CUDA_Test ${OpenCV_LIBS})
#MESSAGE(STATUS "opencv libs: ${OpenCV_LIBS}")MESSAGE(STATUS "**************************************")
操作步骤(prj/linux_cmake/ReadMe.txt)如下:在Linux下通过CMake编译CUDA_Test中的测试代码步骤:
1. 将终端定位到CUDA_Test/prj/linux_cmake,依次执行如下命令:$ mkdir build$ cd build$ cmake ..$ make (生成CUDA_Test执行文件)$ ./CUDA_Test
2. 对于有需要用OpenCV参与的读取图像的操作,需要先将对应文件中的图像路径修改为Linux支持的路径格式
GitHub: https://github.com/fengbingchun/CUDA_Test
相关文章:

JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)
在使用Spring Cloud的过程中,难免会遇到一些问题。所以对Spring Cloud的常用问题做一些总结。需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 一、Eureka常见问题 1.1 Eureka 注册服务慢 默认情况下,服务…

TinyFrame升级之八:实现简易插件化开发
本章主要讲解如何为框架新增插件化开发功能。 在.net 4.0中,我们可以在Application开始之前,通过PreApplicationStartMethod方法加载所需要的任何东西。那么今天我们主要做的工作就集中在这个时间段: 1.将插件DLL及文件拷贝入主网站目录并编译…
快手王华彦:端上视觉技术的极致效率及其短视频应用实践 | AI ProCon 2019
演讲嘉宾 | 王华彦(快手硅谷Y-tech实验室负责人) 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 快手用户日均上传1500万个视频,要把这些作品准确的分发给超2亿活跃用户,如果没有强大的AI技术系统去理解…
tmux简介及安装
tmux是一个开源工具,用于在一个终端窗口中运行多个终端会话。它可以减少过多的打开终端控制台。tmux的源码在 https://github.com/tmux/tmux ,它的License是BSD。tmux可以直接通过sudo apt-get install tmux命令安装(通过sudo apt-get remove tmux移除)…

Swift中依赖注入的解耦策略
原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技术之一,也是许多编程语言中使用频繁的概念。 具体来说,我们将…

Eclipse mac 下的快捷键
2019独角兽企业重金招聘Python工程师标准>>> Eclipse,MyEclipse 的preference 在“windows”下边,mac下在左上角苹果图标边上 win下我们都习惯了ctrl c,在Mac 下使用标准键盘变成了win键c 系统的偏好设定 -> 键盘 -> 修饰…
Ubuntu上使终端显示Git分支(oh-my-zsh)
oh-my-zsh是基于Zsh(Zsh是一个Linux用户很少使用的power-shell,这是由于大多数Linux产品安装,以及默认使用bash shell)的功能作了一个扩展,方便插件管理、主体自定义等。oh-my-zsh源码在 https://github.com/robbyrussell/oh-my-zsh &#x…

天哪!我的十一假期被AI操控了
(图片付费下载自视觉中国)导语:这个假期,除了脑海一直在唱歌,庆祝祖国成立的 70 周年,当然也闲不住,要乘机出去浪一浪。目前小长假进度条已经进行到 71.4% 了,有没有发现这个假期与以…

使用SVN+Axure RP 8.0创建团队项目
一、使用到的工具:VisualSVN Server --SVN服务器:https://www.visualsvn.com/server/ Axure RP 8.0 :http://www.downcc.com/soft/103078.html 二、VisualSVN Server 安装以及操作1、安装 : 默认安装即可 2、操作: &a…

no no no.不要使用kill -9.
2019独角兽企业重金招聘Python工程师标准>>> no no no.不要使用kill -9. 它没有给进程留下善后的机会: 1) 关闭socket链接 2) 清理临时文件 3) 将自己将要被销毁的消息通知给子进程 4) 重置自己的终止状态 等等。 通常,应该发送15,…

人工智能的“天罗地网”
(图片付费下载自视觉中国)整理 | 弯月编辑 | 郭芮来源 | CSDN(ID:CSDNnews)人工智能(AI)技术正在全球迅速崛起。不断涌现的最新发展令世人瞩目,从以假乱真的深度伪造视频,…
Ubuntu下安装Cppcheck源码操作步骤
Cppcheck是用在C、C中对code进行静态检查的工具。它的源码在 https://github.com/danmar/cppcheck 。它的License是GPL-3.0。Cppcheck可以检查不通过编译的文件,执行的检查包括:(1)、自动变量检查;(2)、数组的边界检查;(3)、clas…

用“脸”打卡,抬头就能签到!
科技正在飞速改变我们的生活,以前我们上班的时候,脖子上总会挂一个IC卡用来验证身份和签到打卡,后来指纹识别出现了,我们又逐渐习惯了指纹打卡,到如今,随着人脸识别技术的出现,我们开始用“脸”…

OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串、数组、字典、集合的常用方法 字符串、数组、字典、集合有可变和不可变之分。以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值;而可变字符串调用相应地方法后,本身会改变;…

分类、检测、分割任务均有SOTA表现,ACNet有多强?
(图片付费下载自视觉中国)作者 | 路一直都在来源 | 知乎专栏Abstract本文提出了一种新的自适应连接神经网络(ACNet),从两个方面对传统的卷积神经网络(CNNs)进行了改进。首先,ACNet通过自适应地确定特征节点之间的连接状态…
CUDA Samples: approximate prior vbox layer
以下CUDA sample是分别用C和CUDA实现的类似prior vbox layer的操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下:common.hpp:#ifndef FBC_CUDA_TEST_COMMON_HPP_ #define FBC_CUDA_TEST_COMMON_HPP_#include <typeinfo> #inc…

如何成为一名成功的 iOS 程序员?
前言: 编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域。你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识。只是对编程感兴趣还不足以功成名就——众所周知,我们工作起来像疯子。 编程是一个没有极限的职业,所以要成为一…

C#之委托与事件
委托与事件废话一堆:网上关于委托、事件的文章有很多,一千个哈姆雷特就有一千个莎士比亚,以下内容均是本人个人见解。1. 委托1.1 委托的使用这一小章来学习一下怎么简单的使用委托,了解一些基本的知识。这里先看一下其他所要用到的…

24式加速你的Python
作者 | 梁云1991来源 Python与算法之美一、分析代码运行时间第1式,测算代码运行时间平凡方法快捷方法(jupyter环境)第2式,测算代码多次运行平均时间平凡方法快捷方法(jupyter环境)第3式,按调用函…
pip、NumPy、Matplotlib在Windows上的安装过程
Windows上Python 3.6.2 64位的安装步骤:1. 从 https://www.python.org/downloads/windows/ 下载Windows x86-64 executable installer(即python-3.6.2-amd64.exe);2. 直接以管理员身份运行安装,勾选添加到环境变量、pip等即可。可以同时在Wi…

分享:个人是怎么学习新知识的
为什么80%的码农都做不了架构师?>>> 挺多童鞋问我是怎么学习新知识的,干脆写篇文章总结一下,希望对大家有所帮助。对照书、技术博客、极客时间等学习的方式我就不说了。 一、早期 在15年及更早,由于知识储备少&#x…

easyui的datagrid
datagrid数据的绑定方式: 1)data 后跟数据行的json串 2)url 后跟{"total":,"rows":,"foot":},其中total代码返回总行数,rows为数据行json串 .NET MVC,controll控制类方法中获取datagrid…
线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现
回归:在这类任务中,计算机程序需要对给定输入预测数值。为了解决这个任务,学习算法需要输出函数f:Rn→R。除了返回结果的形式不一样外,这类问题和分类问题是很像的。这类任务的一个示例是预测投保人的索赔金额(用于设置保险费)&am…

4种最常问的编码算法面试问题,你会吗?
导语:面试是测查和评价人员能力素质的一种考试活动。最常问的编码算法面试问题你知道多少呢?作者 | Rahul Sabnis译者 | 苏本如,编辑 | 刘静来源 | CSDN(ID:CSDNnews)在许多采访中,我经常被要求…

[小梅的体验课堂]Microsoft edge canary mac版本体验
简介 华硕微软越来越没有自己的JC了,不经在windows里面加了wsl而且还废弃了自己的老edge浏览器,重新基于chromium内核开发了新的edge浏览器了,不管怎么说mac上又多了一款新的浏览器,对于一个爱好新鲜的我来说那就简单安装体验下 下…

SQL Server用户自定义函数
用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统 函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行。在 SQL Server 中根据函数返回值形式的不同将用户自 定义函数分为三种类型:…

C++11中std::initializer_list的使用
initializer_list是一种标准库类型,用于表示某种特定类型的值的数组。和vector一样,initializer_list也是一种模板类型,定义initializer_list对象时,必须说明列表中所含元素的类型。和vector不一样的是,initializer_li…

WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧
2019独角兽企业重金招聘Python工程师标准>>> 下载WijmoJS 2019 v1 WijmoJS是为企业应用程序开发而推出的一系列包含HTML5和JavaScript的开发控件。其中包含了金融图表、FlexSheet、先进的JavaScript控件(Wijmo 5)和经典的jQuery小部件&#x…

最后3天,BDTC 2019早鸟票即将售罄,超强阵容及议题抢先曝光!
大会官网:https://t.csdnimg.cn/U1wA2019 年12月5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN、中科天玑数据科技股份有限公司协办的 2019 中国大数据技术大会,将于北京长城饭店隆重举行。届时…

php_mongo.dll下载(php操作mongoDB需要)
php_mongo.dll下载(php操作mongoDB需要)如果PHP连接操作mongoDB就必须要加入此扩展:php_mongo.dll,放到你对应php的扩展目录在你的php.ini中加入:extensionphp_mongo.dll重启apache,在phpinfo()中查看是否有…