欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

cmake (2)build方面的指令

发布时间:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 cmake (2)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 (2)build方面的指令的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。