一个简单的cmake例子

一个简单的cmake例子CMakeLists.txt,生成动态库文件,可以指定发布目录。
尚不支持:
  1、交叉编译环境配置
  2、添加依赖库
 
 1 #在当前目录新建一个build目录,然后cd build;cmake ..
 2 #这样的好处是,可以将cmake生成的内容,和源码文件分离
 3  
 4 #定义好版本需求
 5 cmake_minimum_required (VERSION 2.6)
 6 #工程名字
 7 project (Libtree)
 8 #编译结果发布路径
 9 set ( CMAKE_INSTALL_PREFIX ./_install)
10  
11 ## The version number.
12 set (Tutorial_VERSION_MAJOR 1)
13 set (Tutorial_VERSION_MINOR 0)
14  
15 #设置源码文件,分别是avl.c rb.c splay.c
16 set (LIBHELLO_SRC avl.c rb.c splay.c)
17  
18 #动态库
19 ADD_LIBRARY (tree SHARED ${LIBHELLO_SRC})
20 #静态库
21 ADD_LIBRARY (tree_static STATIC ${LIBHELLO_SRC})
22  
23 SET_TARGET_PROPERTIES (tree_static PROPERTIES OUTPUT_NAME "tree")
24 GET_TARGET_PROPERTY (OUTPUT_VALUE tree_static OUTPUT_NAME)
25 MESSAGE (STATUS "This is the tree_static OUTPUT_NAME: " ${OUTPUT_VALUE})
26  
27 # cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库,
28 # 因此,在构建libtree.a时,就会清理掉libtree.so.
29 # 为了回避这个问题,比如再次使用SET_TARGET_PROPERTIES定义 CLEAN_DIRECT_OUTPUT属性。
30 SET_TARGET_PROPERTIES (tree_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
31 SET_TARGET_PROPERTIES (tree PROPERTIES CLEAN_DIRECT_OUTPUT 1)
32  
33 # 按照规则,动态库是应该包含一个版本号的,
34 # VERSION指代动态库版本,SOVERSION指代API版本。
35 SET_TARGET_PROPERTIES (tree PROPERTIES VERSION ${Tutorial_VERSION_MAJOR}.${Tutorial_VERSION_MINOR} SOVERSION 1)
36  38 #在本例中我们将tree的共享库安装到<prefix>/lib目录;
39 # 将libtree.h安装<prefix>/include/tree目录。
40  
41 INSTALL (TARGETS tree tree_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
42 INSTALL (FILES libtree.h DESTINATION include/tree)

 

转载于:https://www.cnblogs.com/djw316/p/10560874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值