zoukankan      html  css  js  c++  java
  • 一个简单的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)
  • 相关阅读:
    BLOB
    cesium 检测视图改变的代码
    有关Nodejs的一些插件介绍
    线程基础知识
    进程和线程概念对比
    C#对象与XMl文件之间的相互转换(转)
    简介C#读取XML的方式(转)
    关于c# Debug和Release的区别 (转)
    c++堆和栈(转)
    浅谈C#堆栈与托管堆的工作方式(转)
  • 原文地址:https://www.cnblogs.com/djw316/p/10560874.html
Copyright © 2011-2022 走看看