Cmake常用指令

1. cmake_minimum_required(VERSION 2.8)   检查cmake的版本,至少为2.8

2. project(helloworld)      工程名为helloworld

3. aux_source_directory(.  SRC_LIST)  查找当前目录下所有的源文件并保存到SRC_LIST变量中

4. include_directories(./include ./abc) 将./include和./abc加入包含目录列表

5. link_directories(./lib) 将 ./lib加入编译器链接阶段的搜索目录列表

6. add_executable(hello  $(SRC_LIST})  使用SRC_LIST源文件列表里的文件生成一个可执行文件hello

7. add_library(hello STATIC ${SRC_LIST}) 使用SRC_LIST源文件列表里的文件生成一个静态链接库libhello.a

8. add_library(hello SHARD ${SRC_LIST}) 使用SRC_LIST源文件列表里的文件生成一个动态链接库libhello.so

9. target_link_libraries(hello a b.a c.so) 将若干库文件链接到生成的目标hello,target_link_libraries里的库文件的顺序符合gcc/g++链接顺序的规则,即被依赖的库放在依赖它的库的后面,如果顺序有错,链接时会报错。

10. 自定义链接选项

11. 自定义Makefile目标

12. FIND_PATH(<VAR> name1 [path1 path2 ...]) 该命令在参数path1, path2...指示的目录中查找文件name1并将查找到的路径保存到变量VAR中

13. FIND_LIBRARY同FIND_PATH类似,用于查找链接库并将结果保存在变量中

example:在开发软件的时候我们会用到一些函数库,这些函数库在不同的系统中安装的位置可能不同,编译的时候需要首先找到这些头文件以及链接库所在的目录以便生成编译选项。

第一步,在项目的根目录中创建目录cmake/modules/, cmake/modules/下创建文件Findlibxx.cmake,内容如下:

MESSAGE(STATUS "Using budled findlibxx.cmake...")

FIND_PATH(

LIB_XX_INCLUDE_DIR

XX.h

/usr/include/

/use/local/include/

)

//在/usr/lib/ 和/usr/local/lib/目录下,寻找名为xx的链接库,并将结果保存在 LIB_XX_LIBRARIES中

FIND_LIBRARY(

LIB_XX_LIBRARIES NAMES XX

PATHS /usr/lib/  /usr/local/lib/

)

第二步,项目的根目录中的CmakeList.txt

project(main)

cmake_minimum_required(version 2.8)

set(CMAKE_SOURCE_DIR .)

set(CMAKE_MODULE_PATH ${CMAKE_ROOT}/Modules ${CMAKE_ROOT}/cmake/modules}

aux_source_directory(. DIR_SRCS)

add_executable(main ${DIR_SRCS})

find_package(XX required)

mark_as_advanced(

LIB_XX_INCLUDE_DIR

LIB_XX_LIBRARIES

)

时间: 2024-10-21 17:12:34

Cmake常用指令的相关文章

cmake 常用变量和常用环境变量查表手册

cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种,前面举了一个隐式定义的例子,就是 PROJECT 指令,他会隐式的定义<projectname>_BINARY_DIR 和<projectname>_SOURCE_DIR 两个变量.显式定义的例子我们前面也提到了,使用 SET 指令,就可以

cmake常用工程示例大集合

1 简单的可执行文件生成工程 1.1 源文件   main.cpp #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello CMake!/n"); return 0; } 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1.2 CMakeLists.txt文件   CMakeLists.txt # 版本限定 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

cmake 常用变量和常用环境变量

cmake 常用变量和常用环境变量 一.cmake 变量引用的方式 前面我们已经提到了,使用${ }进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${ }取值. 二.cmake 自定义变量的方式 主要有隐式定义和显式定义两种,前面举了一个隐式定义的例子,就是 PROJECT 指令,他会隐式的定义"<projectname>_BINARY_DIR "和"<projectname>_SOURCE_DIR "两个变量. 使用 SET

JSP 的内置对象及方法,动作和作用,常用指令

JSP 的内置对象及方法:JSP 共有以下9 种基本内置组件:request:用户端请求,此请求会包含来自GET/POST 请求的参数:response:网页传回用户端的回应:pageContext:网页的属性是在这里管理:session:与请求有关的会话期,可以存贮用户的状态信息:application:servlet 正在执行的内容:out:用来传送回应的输出:config:servlet 的构架部件,用于存取servlet 实例的初始化参数:page:JSP 网页本身:exception:

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-

Angular 2 模板语法与常用指令简介

一.模板语法简介 插值表达式 <div>Hello {{name}}</div> 等价于 <div [textContent]="interpolate(['Hello'], [name])"></div> 模板表达式 1.属性绑定 1.1输入属性的值为常量 <show-title title="Some Title"></show-title> 等价于 <show-title [titl

【Mysql】常用指令之——忘记密码

上一篇文章基本总结了下myql下通过指令怎么创建用户,详见:[Mysql]常用指令之--用户操作(创建,授权,修改,删除) 今天说下特殊情况,忘记密码了怎么办??? 重装,删除配置等可以完成此操作.那不重装怎么办呢? 原理: 通过增加启动参数:--skip-grant-tables 跳过grant-tables启动数据库,这样就不需要密码就能进去了. 下面来玩玩: linux下: 1.关闭mysql进程,应该都会哈比如:service mysql stop 或者 ps -ef | grep my

sort,uniq,cut常用指令

sort: 排序所有指定文件并将结果写到标准输出. -u:去除重复行 -r:反向排序 -n:数值排序从小到大 -t:指定分段的符号 -k:指定的第几个段 -b:忽略所有空白行  [[email protected] ~]# sort Andy.txt 1 2 2 34 56 accp benet I'm sorry, Mr. Three pineapple Two watermelon Water on the refrigerator [[email protected] ~]# sort -

linux下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢X,因此不推荐. (如果是第一次提交文件,很可能会出现"svn:'.'不是工作副本",即当前目录不是工