cmake build方面的指令
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake build方面的指令相关的知识,希望对你有一定的参考价值。
1.
add_exectuable 告诉工程生成一个可执行文件
add_library 则告诉生成一个库文件,构建动态库和静态库
eg.
#生成应用程序 hello
ADD_EXECUTABLE(hello $SRC_LIST)
eg.
project(helloso)
set(LIB_SRC hello.c)
add_library($PROJECT_NAME SHARED $LIB_SRC)//动态库
1.1 参数也可以使用分号来进行分割
eg.
ADD_EXECUTABLE(t1 main.c t1.c)可以写成 ADD_EXECUTABLE(t1 main.c;t1.c)
1.2 ADD_LIBRARY
ADD_LIBRARY(libname [SHARED|STATIC|MODULE][EXCLUDE_FROM_ALL] source1 source2 … sourceN)
不需要写全 libhello.so,只需要填写 hello 即可,cmake 系统会自动生成libhello.X的类型有三种:
- SHARED,动态库
- STATIC,静态库
- MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待。
- EXCLUDE_FROM_ALL 参数的意思是这个库不会被默认构建,除非有其他的组件依赖或者手
工构建。
eg.
#构建一个 libhello_static.a 的静态库了
ADD_LIBRARY(hello_static STATIC $LIBHELLO_SRC)
1.3 SET
引号SET(SRC_LIST “func.c”)
忽略掉 source 列表中的源文件后缀
#cmake 会自动的在本目录查找 main.c 或者 main.cpp
ADD_EXECUTABLE(t1 main)
1.4 动态库版本号
SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1)
VERSION 指代动态库版本,SOVERSION 指代 API 版本。
eg.
在 build/lib 目录会生成:
libhello.so.1.2
libhello.so.1->libhello.so.1.2
libhello.so ->libhello.so.1
以上是关于cmake build方面的指令的主要内容,如果未能解决你的问题,请参考以下文章