ubuntu下cmake自动化编译的一个例子
一个CMakeLists.txt的例子
参考:
https://www.hahack.com/codes/cmake/
https://blog.csdn.net/afei__/article/details/81201039
项目目录
-test
-include
-math.hpp
-src
-math.cpp
main.cpp
CMakeLists.txt
math.hpp:
double power(double base, int exponent);
math.cpp:
#include <math.hpp> double power(double base, int exponent)
{
int result = base;
int i; if (exponent == ) {
return ;
} for(i = ; i < exponent; ++i){
result = result * base;
} return result;
}
main.cpp:
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <math.hpp> using namespace std;
using namespace cv; int main(){
cout<<CV_VERSION<<endl;
Mat im=imread("test.jpg");
if(!im.empty())
cout<<"读取图片成功"<<endl;
else
cout<<"读取图片失败"<<endl;
double res=power(,);
cout<<res<<endl;
return ;
}
CMakeLists.txt:
#指定cmake 版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
#指定项目名称,一般和项目的文件夹名称对应
PROJECT(test) #头文件目录
INCLUDE_DIRECTORIES(include /usr/local/include/)
#等价的设置方式
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I$/usr/local/include") #链接库路径
LINK_DIRECTORIES(/usr/local/lib/)
#等价的设置方式
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L$/usr/local/lib") #查找到指定的预编译库,并将它的路径存储在变量中
FIND_LIBRARY(OPENCV_LIB_PATH opencv_core)
MESSAGE(${OPENCV_LIB_PATH})#/usr/local/lib/libopencv_core.so #源文件目录
AUX_SOURCE_DIRECTORY(. SRC_LIST)
#也可以这样匹配
#FILE(GLOB SRC_LIST "*.cpp" "src/*.cpp") #添加子目录,子目录里有另一CMakeLists.txt待编译
#ADD_SUBDIRECTORY(src) #生成链接库,可以指定SHARED,STATIC参数
#ADD_LIBRARY(math STATIC math.cpp)
ADD_LIBRARY(math SHARED src/math.cpp) #设置一些变量SET,LIST(APPEND/REMOVE_ITEM)
#SET(SRC_LIST main.cpp)
#LIST(APPEND SRC_LIST src/math.cpp)
#LIST(REMOVE_ITEM SRC_LIST src/math.cpp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g")
SET(OPENCV_LIBS opencv_highgui opencv_imgcodecs opencv_core) #添加要编译的可执行文件
ADD_EXECUTABLE(main ${SRC_LIST}) #添加可执行文件所需要链接的库
TARGET_LINK_LIBRARIES(main ${OPENCV_LIBS} math)
ubuntu下cmake自动化编译的一个例子的更多相关文章
- ubuntu下code::blocks编译运行一个简单的gtk+2.0项目
在具体的操作之前,首先需要安装一些必要的软件.ubuntu下默认安装了gcc,不过缺少必要的Header file,可以在命令行中输入下面的指令安装build-essential套件:sudo apt ...
- ubuntu下使用反编译apk,工具dex2jar和jd-gui
ubuntu下使用反编译apk, 工具 1:通过apk-tool反编译出资源文件: http://code.google.com/p/android-apktool/ 2.首先使用dex2jar反编译 ...
- Ubuntu下使用gcc编译c文件,未识别cos,sin
Ubuntu下使用gcc编译c文件,虽然我调用了math.h的头文件,但是未识别cos,sin 报错:( fft.c ) /tmp/ccwXjD8C.o: In function `fft': fft ...
- 基于TDengine-ver-1.6.4.4在windows 10下cmake+msys2编译(windows cgo 使用)
目录 基于TDengine-ver-1.6.4.4在windows 10下cmake+msys2编译(windows cgo 使用) 背景 下载地址 仓库地址 安装部署 msys2 安装 配置环境变量 ...
- ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用
作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- Ubuntu 下安装opencv 编译后执行找不到库
在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot ope ...
- 搭建Ubuntu下c/c++编译环境【转】
1. 安装Ubuntu. 2. 安装gcc 方法一: sudo apt-get install build-essential 安装完了可以执行 gcc--version的 ...
- (1)Ubuntu下CloudCompare的编译
Ubuntu下,需要提前安装openGL和Qt 为了可视化操作,使用Cmake进行编译设置 将下载的CloudCompare文件夹下的cmakeList.txt用cmake作为打开方式 Cmake设置 ...
- ubuntu下Android反编译详细教程-apktool,dex2jar,jd-gui的使用
转载请注明出处:http://blog.csdn.net/fightlei/article/details/52432161 最近在学习Android反编译的一些知识,虽然在网上搜到了很多相关的文章, ...
随机推荐
- 《深入浅出MyBatis技术原理与实战》——6. MyBatis的解析和运行原理
MyBatis的运行分为两大部分,第一部分是读取配置文件缓存到Configuration对象,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程. 6.1 涉及的技术 ...
- vue利用watch侦听对象具体的属性 ~ 巧用计算属性computed做中间层
有时候需要侦听某个对象具体的属性,可以按下面案例进行: <template> <div> <input type="text" v-model=&qu ...
- 探索sklearn | 鸢尾花数据集
1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集.它是用统计进行分类的鼻祖. sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一. 导入 ...
- AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...
- CSS布局和居中常用技巧
1.常用居中方法 居中在布局中很常见,我们假设DOM文档结构如下,子元素要在父元素中居中: <div class="parent"> <div class=&qu ...
- vue-cli中引入jquery方法
这里有个详解,当然,仅仅是安装jq的话下面这个办法就够了.传送门 在webpack.base.conf.js里加入 var webpack = require("webpack") ...
- PowerShell 获取系统的硬件信息
1.获取系统的BIOS的信息: Get-WMIObject -Class Win32_BIOS 2.获取内存信息: Get-WMIObject -Class Win32_PhysicalMemory ...
- 从零开始做SSH项目(二)
使用hibernate测试加载数据.删除数据和修改数据等功能时,针对的是与数据库表user对应的User. 为了简化对其他数据表对应的实体类的持久化操作,可以在项目中创建一个BaseHibernate ...
- CF1020B Badge 【模拟链表】
n个点(n<=1000) 接下来n个整数表示ai 第i个数ai表示i到ai有一条边 输出: n个数 表示从第i个点出发,最先被访问两次的点 样例1: 从1 出发,先到达2,2会到达3,3又到达2 ...
- 洛谷P3805 [模板]Manacher算法 [manacher]
题目传送门 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a,b,c...y,z组成的字符 ...