CMake 使用方法 & CMakeList.txt<转>】的更多相关文章

CMake 使用方法 & CMakeList.txt cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake. CMake 使用方法 CMake的所有的语句都写在一个叫:CMakeLists.txt的文件中.当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置.这个命令必须指向CMa…
set(CMAKE_INCLUDE_CURRENT_DIR ON)#CMAKE_INCLUDE_CURRENT_DIR equal to INCLUDE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})CMAKE_INCLUDE_CURRENT_DIR Automatically add the current source- and build directories to the include path.…
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).因此CMake的编译基本就两个步骤: 1. cmake 2. make cmake  指向CMakeLists.txt所在的目录,例如cmake .. 表示CMak…
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).因此CMake的编译基本就两个步骤: 1. cmake 2. make cmake  指向CMakeLists.txt所在的目录,例如cmake .. 表示CMak…
有很多 的时候我们使用别人的程序包.然后添加东西的时候缺少什么东西,会使程序编译不过去,甚至无法运行,接下来介绍一下cmakelist.txt 的每一行的作用.为了以后添加和修改方便. 2.整体结构和订购您的CMakeLists.txt文件必须遵循此格式,否则您的包将无法正确构建. 配置中的顺序计数. 所需CMake版本(cmake_minimum_required) 软件包名称(project()) 查找构建所需的其他CMake / Catkin软件包(find_package()) 启用Py…
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake. CMake 使用方法 CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中.当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置.这个命令必须指向CMakeLists.txt所在的目录.配置完成之后,应用cmake命令生成…
源文件imageBasics.cpp #include <iostream> #include <chrono> using namespace std; #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> int main ( int argc, char** argv ) { // 读取argv[1]指定的图像 cv::Mat image; image = cv:…
cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake. CMake 使用方法 CMake的所有的语句都写在一个叫:CMakeLists.txt的文件中.当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置.这个命令必须指向CMakeLists.txt所在的目录.配置完成之后,应用c…
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake. CMake 使用方法 CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中.当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置.这个命令必须指向CMakeLists.txt所在的目录.配置完成之后,应用cmake命令生成…
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake. CMake 使用方法 CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中.当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置.这个命令必须指向CMakeLists.txt所在的目录.配置完成之后,应用cmake命令生成…
单个源文件下CmakeList.txt 1. main.c代码 & CmakeLists.txt 文件内容 在任意自己选定的目录下(t1/)编写main.c 与 CmakeLists.txt main.c 文件内容: //main.c #include <stdio.h> int main() { printf("Hello World from t1 Main!\n"); return 0; } CMakeLists.txt 文件内容: PROJECT (HELL…
linux cmake安装方法 OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake:还有其它一些软件都需要先安装cmake 1.在linux环境下打开网页浏览器,输入网址:<a title="http://www.cmake.org/cmake/resources/software.html" href="http://www.cmake.org/cmake/resources/software.html">…
注:若需要参考rhel7上安装MySQL 请 点击此处 1.下面MySQL链接库版本用到了boost(若需要请到官网下载最新链接库和文档和C++连接数据库操作示例) Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), Compressed TAR Archive 2.下载boost(若需要请到官网下载最新版本) boost_1_64_0.tar.gz 3.CMakeList.txt(初学写的不好) cmake_minimum_re…
http://techbase.kde.org/Development/Tutorials/CMake_(zh_CN) http://www.cmake.org/Wiki/CMake 这一章将从软件开发人员的角度来描写叙述怎样有用CMake.也就是说.假设你的目标是用CMake来管理你的生成过程,请阅读这一章. CMake的输入 COMMAND(args) 这里的 COMMAND 是命令行的名称.args是用空格切割的參数列表.典型的,对与每个项目的文件夹存在一个CMakeLists.txt.…
介绍一个比较实用的例子,即包含生成静态库又包含引入外部头文件和链接库的cmake demo. 先按照工程规范建立工程目录,并编写代码,以下面的工程目录为例进行解释这个例子,工程的目录结构为: 1. 编写CMakeLists.txt 由于一个工程目录中包含多个项目,其中在此项目中包含util项目和main项目,其中util项目是用以生成main程序需要的静态库,main是用以生成可执行文件. 在工程项目中的父目录向有一个CMakeLists.txt是用以声明定义工程需要的Cmake设置还定义了子目…
cmake_symlink_library: System Error: Operation not supported 1/创建链接不成功,要确认当前帐户下是否有权限在编译的目录中有创建链接的权限 我使用vmware,在win7机器的共享目录中编译,无法创建链接,就会提示上面的错误. 解决办法是,把源码复制到linux的本地目录中,比如/home等,在本地目录中编译就不会有这个问题.…
[快速查询]https://cmake.org/cmake/help/v2.8.8/cmake.html#section_Commands 1 CMake简介 CMake是跨平台编译工具,比make更高级一些.其编译的主要工作是生成CMakeLists.txt文件,然后根据该文件生成Makefile,最后调用make来生成可执行程序或者动态库.所以基本步骤就只有两步:(1)cmake生成CMakeLists.txt文件:(2)make执行编译工作. 下面一张图对比一下AutoTools与CMak…
cmake -G"Visual Studio 9 2008 Win64" 以上命令得用cd命令切换到顶层CMakeLists.txt的当前目录,才能生效 以下是CMakeLists.txt的代码 cmake_minimum_required(VERSION 2.8) PROJECT(FFI) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_definitions(-D_LIB) #包含工程所需要的头文件路径 include_director…
由于Ubuntu14.04的cmake版本为2.8.x,而如果需要cmake3.x版本时,无法生成makefile,有两种方法可以安装cmake3.10.0: 方法1: sudo apt-get install software-properties-common .x sudo apt-get update sudo apt-get install cmake sudo apt-get upgrade 方法2: sudo apt-get install build-essential wget…
在编译C工程时,遇到了如下错误: 一般看到类型错误,主要考虑是不是编译器错了. 以下引用:https://www.cnblogs.com/liushui-sky/p/7729838.html 后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的 所以对于C工程,最好只用gcc编译器,修改如下: set(CMAKE_C_COMPILER "gcc") 最终结果如下图所示: 关…
#前一篇帖子实验了build_sdk.py来编译opencv,失败了.#本篇尝试使用cmake来编译#感谢这篇帖子提供的指导:https://www.cnblogs.com/jojodru/p/10025658.html#cd /home/ahfu#选择opencv 3.4.6版本来编译wget https://github.com/opencv/opencv/archive/3.4.6.tar.gztar -zxvf opencv-3.4.6.tar.gzwget https://codelo…
cmake_minimum_required(VERSION 3.6) project(capi_lua) include_directories(/usr/include) find_library(LUALIB lua /usr/lib) set(SOURCE_FILES main.c) add_executable(capi_lua ${SOURCE_FILES}) target_link_libraries(capi_lua ${LUALIB}) 1.使用include_director…
在LINUX下面编程需要注意的是,需要自己配置链接库,比如 TARGET_LINK_LIBRARIES(),需要把自己要加的库加进去…
#project namePROJECT(test_math)    指定生成的工程名为test_math #head file path     INCLUDE_DIRECTORIES(include)     指定头文件目录为include #source directoryAUX_SOURCE_DIRECTORY(src DIR_SRCS)     指定源文件目录为src,并将其赋值给环境变量DIR_SRCS #set environment variableSET(TEST_MATH $…
cmake 添加头文件目录,链接动态.静态库 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用. include_directories(../../../thirdp…
CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件.   CMakeLists.txt 的语法比较简单,由命令.注释和空格组成, 其中命令是不区分大小写的, 符号"#"后面的内容被认为是注释.命令由命令名称.小括号和参数组成,参数之间使用空格进行间隔.   常见的命令如下: SET指令 用来显式的定义变量的 语法: SET(VAR[VALUE] [CACHE TYPE DOCSTRING [FORCE]]…
这里写代码片Android开发常常遇到Java调用so文件的情况,本文介绍一下Google最近新推出的应用在android studio中的方法–cmakelist.txt格式调用. so文件分为jni格式的和非jni格式的,java只能调用jni格式的so文件.本文介绍的是针对ndk生成的非jni格式的so文件调用. 首先是对非jni格式的so文件进行处理,声明一个.h文件,将so文件中的方法包进去,之后将.h文件和so文件放在一个目录下(之后需要对目录进行设置),在系统生成的native-l…
CMake与MSVC工程化实践 CMake基础 cmake无疑是最流行的c++跨平台构建工具之一,关于cmake入门指南这里不再赘述,官方文档是最好的参考,这里通过一个例子简述构建一个工程常用的函数和变量. 假设此项目有三个文件hello.h.hello.cpp.main.cpp,hello.h和hello.cpp导出一个void hello();的函数,在main.cpp中使用,CMakeList.txt如下: # 指明当前CMake的版本不能小于指定版本 cmake_minimum_requ…
使用最新Android Studio的Cmake,创建一个Native C++项目后,我们就可以看到JNI的Hello World的项目及示例代码了. JNI的项目代码,分为三层:Java层,C++层,CMake层. 其中Java层定义了调用C++的方法,C++层实现这个方法,CMake定义了如何将C++层的内容打包为一个动态库. 1. Java 层: package com.renhui.jnihelloworld; import android.support.v7.app.AppCompa…
1.链接外部库 如果程序中使用了外部库,事先并不知道它的头文件和链接库的位置,就要给出头文件和链接库的查找方法,并将他们链接到程序中. FIND_PACKAGE(<name> [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [componets...]]) 1) find_package()的查找路径 find_package()命令首先会在模块路径中寻找 一个事先编译好的Find.cmake文件,而且一般官方给出了很多,不需要…