罗列一下cmake常用的命令。

CMake支持大写、小写、混合大小写的命令。

1. 添加头文件目录INCLUDE_DIRECTORIES

语法:

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用。

include_directories(../../../thirdparty/comm/include)

2. 添加需要链接的库文件目录LINK_DIRECTORIES

语法:

link_directories(directory1 directory2 ...)

它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。

link_directories("/home/server/third/lib")

3. 查找库所在目录FIND_LIBRARY

语法:

A short-hand signature is:

find_library ( name1 [path1 path2 ...])

The general signature is:

find_library (

name | NAMES name1 [name2 ...] [NAMES_PER_DIR]

[HINTS path1 [path2 ... ENV var]]

[PATHS path1 [path2 ... ENV var]]

[PATH_SUFFIXES suffix1 [suffix2 ...]]

[DOC "cache documentation string"]

[NO_DEFAULT_PATH]

[NO_CMAKE_ENVIRONMENT_PATH]

[NO_CMAKE_PATH]

[NO_SYSTEM_ENVIRONMENT_PATH]

[NO_CMAKE_SYSTEM_PATH]

[CMAKE_FIND_ROOT_PATH_BOTH |

ONLY_CMAKE_FIND_ROOT_PATH |

NO_CMAKE_FIND_ROOT_PATH]

)

例子如下:

FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH)

cmake会在目录中查找,如果所有目录中都没有,值RUNTIME_LIB就会被赋为NO_DEFAULT_PATH

4. 添加需要链接的库文件路径LINK_LIBRARIES

语法:

link_libraries(library1 library2 ...)

# 直接是全路径

link_libraries(“/home/server/third/lib/libcommon.a”)

# 下面的例子,只有库名,cmake会自动去所包含的目录搜索

link_libraries(iconv)

# 传入变量

link_libraries(${RUNTIME_LIB})

# 也可以链接多个

link_libraries("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so" "/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")

可以链接一个,也可以多个,中间使用空格分隔.

5. 设置要链接的库文件的名称TARGET_LINK_LIBRARIES

语法:

target_link_libraries( [item1 [item2 [...]]]

[[debug|optimized|general] ] ...)

# 以下写法都可以:

target_link_libraries(myProject comm) # 连接libhello.so库,默认优先链接动态库

target_link_libraries(myProject libcomm.a) # 显示指定链接静态库

target_link_libraries(myProject libcomm.so) # 显示指定链接动态库

# 再如:

target_link_libraries(myProject libcomm.so)  #这些库名写法都可以。

target_link_libraries(myProject comm)

target_link_libraries(myProject -lcomm)

6. 为工程生成目标文件

语法:

add_executable( [WIN32] [MACOSX_BUNDLE]

[EXCLUDE_FROM_ALL]

source1 [source2 ...])

简单的例子如下:

add_executable(demo

main.cpp

)

6. 最后贴一个完整的例子

cmake_minimum_required (VERSION 2.6)

INCLUDE_DIRECTORIES(../../thirdparty/comm)

FIND_LIBRARY(COMM_LIB comm ../../thirdparty/comm/lib NO_DEFAULT_PATH)

FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH)

link_libraries(${COMM_LIB} ${RUNTIME_LIB})

ADD_DEFINITIONS(

-O3 -g -W -Wall

-Wunused-variable -Wunused-parameter -Wunused-function -Wunused

-Wno-deprecated -Woverloaded-virtual -Wwrite-strings

-D__WUR= -D_REENTRANT -D_FILE_OFFSET_BITS= -DTIXML_USE_STL

)

add_library(lib_demo

cmd.cpp

global.cpp

md5.cpp

)

link_libraries(lib_demo)

add_executable(demo

main.cpp

)

# link library in static mode

target_link_libraries(demo libuuid.a)

另外,使用cmake生成makefile之后,make edit_cache可以编辑编译选项。

不熟悉的命令可以去查找文档,贴个cmake3.0官方帮助文档地址

https://cmake.org/cmake/help/v3.0/index.html

==============================================

最近在搭建自己的博客,欢迎来逛。

https://sharebook.wang

CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

cmake 添加头文件目录,链接动态、静态库(转载)

来源网址:http://www.cnblogs.com/binbinjx/p/5626916.html 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目 ...

vs添加静态链接库+添加动态链接库+添加头文件目录

头文件添加方法:工程---属性---配置属性---c/c++---常规---附加包含目录(Additional Include Directories):加上头文件存放目录.注意:(1)路径必须指向头 ...

cmake的使用二:链接第三方静态库

cmake的使用二:链接第三方静态库

NDK 链接第三方静态库的方法

将NDK编译的第三方静态拷贝到JNI目录下,在Android.mk中添加如下代码 以openssl静态库(libcrypto-static.a)为例 第一种链接方法:LOCAL_LDFLAGS := ...

g++ 链接*.a静态库 方法

g++在链接*.a静态库时,直接作为object使用,不需要使用-l ,但是需要注意调整顺序,被依赖的文件放在后面. 如: g++  -g  -o0 -Wno-deprecated  -I$(INCL ...

【转】Linux编译链接问题----静态库和动态库

Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不 ...

VS2010编译链接openssl静态库

最近工作需要使用一些加密算法.之前尝试过cryptopp以及polarssl,听说openssl中的加密模块特别全,并且特别好用.于是想尝试一下. 一.环境配置 下载openssl,我这里使用的是op ...

VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

转帖:http://blog.csdn.net/whygosofar/article/details/2821875 MSDN中对于在不同的配置下Link的LIB作了说明: C Runtime Lib ...

随机推荐

set和enum类型的用法和区别

mysql中的set和enum类型的用法和区别 mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值, 不同的是set可以取多个值,enum只能取一个值.   1 2 3 ...

x01.Weiqi.11: 神来之笔

在围棋中,一子两用,可谓妙手,而一子三用,则可称之为神来之笔.在解决征子问题时,一不小心,也来了个神来之笔,其代码如下: // 征子判断,p1, p2 为气,p2 为前进方向,p 为逃跑之子. boo ...

新手理解HTML、CSS、javascript之间的关系

http://www.cnblogs.com/dreamingbaobei/p/5062901.html 工作多年,一直忙忙碌碌的应用各种技术,现在不忙了,问问自己究竟在做什么,究竟会什么竟答不上来, ...

Apache 虚拟主机

httpd支持的虚拟主机类型包括以下三种 基于域名:为每个虚拟主机使用不同的域名.但其对应的IP使相同的. 基于IP地址:为每个虚拟主机使用不同的域名,切各自对应的IP地址也不相同. 基于端口:这种方 ...

c++11 gcc4.8.x安装

c++11 gcc4.8.x安装 2014年12月11日默北   要安装PHP-CPP,需要c++11,否则就会报错,错误信息如下所示: g++ -Wall -c -g -std=c++11 -fpi ...

java.util Pattern 和 Mathcer

1.测试给定的正则表达式是否匹配输入的字符串,这里该正则表达式只使用一次 private String regex ; private String input; @Before public voi ...

django创建工程,用命令

django创建工程的命令 >>python C:\Python33\Lib\site-packages\django\bin\django-admin.py startproject p ...

error processing package oracle-java8-installer问题解决

ubuntu通过ppa源安装jdk时遇到如下问题: download failedOracle JDK 8 is NOT installed.dpkg: error processing packag ...

【HDU4734】F(x) 【数位dp】

题意 先定义了一个函数F(X)=An*2^n-1+An-1*2^n-2+.....+A1*1.其中Ai为X的第i位的值.对于每组数据给出了两个整数A,B.问不超过B的数中有多少的F值是不超过F(A)的 ...

HTML基础part2

表单标签form 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含textarea.sel ...

c语言makecode头文件,cmake 添加头文件目录,链接动态、静态库相关推荐

  1. 如何向linux中添加头文件,linux添加头文件路径

    gcc demo.c -o demo  -I/tools/libevent/include -L/tools/libevent/lib -levent -I:头文件目录 -L:静态库目录 -l:静态库 ...

  2. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  3. linux编译静态库的头文件,条件编译,头文件,静态库,共享库与多文件编程

    条件编译 条件编译即满足某些条件的时候编译某部分代码,常用于开发多个版本的程序,当满足条件A时,编译出免费版本的软件,当满足条件B时,编译除vip版本的软件,可以提高代码的复用率.条件编译使用&quo ...

  4. Linux C try 头文件,linux c 头文件

    //1.Linux中一些头文件的作用: #include //ANSI C.提供断言,assert(表达式) #include //GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构 ...

  5. C++声明、定义、类的定义、头文件作用、头文件重复引用

    转载至:点击打开链接 C++声明.定义.类的定义.头文件作用.头文件重复引用,不具名空间 转自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/ ...

  6. hpp头文件和h头文件

    详解:C++ hpp头文件与h头文件-C++ hpp文件-嗨客网 个人见解: hpp只是为了让人知道这个文件声明和定义都在同一个文件,仅此而已.至于上面文章说的增加cpp和编译次数 1.完全可以用.h ...

  7. cmake 添加头文件目录,链接动态、静态库

    罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...

  8. c语言cstdio头文件,cstdio(cstdio头文件有什么用)

    cstdio是将stdio.h的内容用c++头文件的形式表示出来.stdio.h是c标准函数库中的头文件,即:standard buffered input&output.提供基本的文字的输入 ...

  9. c语言cstdio头文件,从cstdio与stdio.h浅析加c头文件与.h头文件的区别

    加C头文件是C++为了兼容纯C语法而对.h文件进行了处理,例如cstdio // cstdio standard header #pragma once #ifndef _CSTDIO_ #defin ...

最新文章

  1. linux debian ntp,Debian下面的ntp服务(ntpdate)的安装
  2. GridView中实现CheckBox的全选
  3. python获取数组中最多的元素
  4. SemSorGrid4Env
  5. MySQL最后一次查询耗时查询
  6. 产品经理与项目经理的区别
  7. JDK源码(13)-Throwable
  8. 过滤access日志前5条数据
  9. 【GWT系列】实现远程过程调用
  10. O(1) O(n)
  11. 【韩顺平 零基础30天学会Java】(第一阶段)(自用)
  12. 用计算机刻盘,用电脑可以刻录光盘吗?
  13. 02、DHT11温湿度传感器
  14. 办公室计算机打印机共享,如何将办公室的所有电脑共享一个打印机???
  15. android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息
  16. 计算机硬件是怎么影响性能的,哪些硬件影响电脑的性能
  17. 如何在pdf文件中编辑页眉页脚
  18. 在项目中这样写代码的时候,请搭配红花油、跌打损伤酒一起使用
  19. 2020年教师计算机培训计划,2020年教师继续教育个人学习计划(精选3篇)
  20. enumerate函数、self参数错误

热门文章

  1. 字符串短横线和驼峰形式的互相转换 Javascript
  2. 用计算机打出刚好遇见你,【计算机·故事】刚好遇见你 余生都是你
  3. android 脚本swipe,移动端滑动插件Swipe教程
  4. 【CCF-CSP201712-4】行车路线
  5. 联想笔记本:安装适配自己电脑的驱动
  6. 2022年全球城市变迁研究报告
  7. Solidworks中螺纹怎么收尾?
  8. 前端必学——用JavaScript实现电商图片放大镜效果(附代码)
  9. [nonebot2]QQ机器人签到插件
  10. YOLO v2论文笔记