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反编译的一些知识,虽然在网上搜到了很多相关的文章, ...
随机推荐
- redis之(十七)自己实现redis的cluster集群环境的搭建
[一]创建不同节点的配置文件和目录.并将配置文件中的port,cluster-enable,daemonize项做修改. --->port:修改成redis实例对应的端口号 --->clu ...
- Longest Valid Parentheses——仍然需要认真看看(动态规划)
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- 邂逅Sass和Compass之Sass篇
对于一个从后台转到前端的web开发者来说,最大的麻烦就是写CSS,了解CSS的人都知道,它可以开发网页样式,但是没法用它编程,感觉耦合性相当的高,如果想要方便以后维护,只能逐句修改甚至重写相当一部分的 ...
- 【JBPM4】任务节点-任务分配assignee
JPDL <process key="task" name="task" xmlns="http://jbpm.org/4.4/jpdl&quo ...
- OpenStack 安装数据库和rabbitmq消息队列 (三)
一)安装配置数据库 1.1.安装包 # yum install mariadb mariadb-server python2-PyMySQL -y 1.2.配置数据库 # vim /etc/my.cn ...
- 洛谷P1565牛宫
传送门:题目点这里; 首先理解题目,就是要求给定矩阵中权值和不小于零的最大子矩阵,数据范围200也还不算棘手,暴力n^4的算法也可以水到50分.正解要用到单调栈配合二分和前缀和,复杂度n^3logn, ...
- Xamarin Android SDK无法更新的解决办法
Xamarin Android SDK无法更新的解决办法 Xamarin Android SDK无法更新的解决办法,更新时候,提示警告信息:A folder failed to be moved. ...
- 安卓 内存泄漏 MemoryAnalyzer
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 需要 获取 root 权限 步骤: 1,使用eclipse 自带的 DDMS 工具分析各线程的内 ...
- JDBC 编程
DAO设计 没有使用DAO存在的问题:多个地方都要都同时做CRUD操作时,重复的代码就会很多. DAO:Data Access Object(数据存取对象). 位于业务逻辑和持久化数据之间,实现对持久 ...
- hdu 4055 Number String (基础dp)
Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...