1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > c语言makecode头文件 cmake 添加头文件目录 链接动态 静态库

c语言makecode头文件 cmake 添加头文件目录 链接动态 静态库

时间:2023-02-21 05:43:09

相关推荐

c语言makecode头文件 cmake 添加头文件目录 链接动态 静态库

罗列一下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/Ra/bin/glnxa64/libeng.so""/opt/MATLAB/Ra/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官方帮助文档地址

/cmake/help/v3.0/index.html

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

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

https://sharebook.wang

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

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

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

来源网址:/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) 优点: 编译后,可执行文件不 ...

VS编译链接openssl静态库

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

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

转帖:/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之间的关系

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

Apache 虚拟主机

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

c++11 gcc4.8.x安装

c++11 gcc4.8.x安装 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 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。