zoukankan      html  css  js  c++  java
  • [BuildRelease]跨平台构建工具Cmake

    一 CMake

    CMake 是一个跨平台的构建工具,通过一次的cmake script的编写,能够生成常见平台常见IDE的project文件或maikefile文件,例如生成visual studio project文件,eclipse project文件,makefile等;同时相对于linux的automake工具生成makefile的过程相对简单。

    主页:http://www.cmake.org/

    参考:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html

    Eclipse 插件:http://www.cthing.com/CMakeEd.asp


    二 特点:

    1)配置文件是cmake script,cmake script是特定于software build的专用编程语言;

    2)内置的对c,c++,java,fortran的依赖的分析;

    3)通过cmake script支持swig,qt,fltk;

    4)支持几乎所有的IDE工程文件或makefile的生成,例如visual studio 6-10,eclipse cdt等;

    6)使用传统的时间戳来检测文件内容的改变;

    7)支持并行build;

    8)依赖的globle view,可以使用cmake产生依赖图;

    9)支持cross compiler。

    10)支持几乎所有的平台;

    11)与ctest,cpack,cdash 集成;

    三 CMake的generators

    1)cmake在windows上的generator的列表:

    2) Linux下generator:

    The following generators are available on this platform:
      Unix Makefiles              = Generates standard UNIX makefiles.
      CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
      Eclipse CDT4 - Unix Makefiles   = Generates Eclipse CDT 4.0 project files.
      KDevelop3                   = Generates KDevelop 3 project files.
      KDevelop3 - Unix Makefiles  = Generates KDevelop 3 project files.

    3)参考:http://www.cmake.org/Wiki/CMake_Generator_Specific_Information

    四 实例

    1)过程简单描述

    # 编写 CmakeLists.txt。
    # 执行命令 “cmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
    # 使用 make 命令进行编译。 

    2)简单实例(在windows上编译sample工程)

    1】实例文件结构如下:

    2】main.cpp如下:

    #include<iostream>
     
    int main()
    {
         std::cout<<"Hello word!"<<std::endl;
         
    return 0;
    }

     3】Cmakelists.txt如下:

    project(Sample)
    cmake_minimum_required(VERSION 2.8)
    aux_source_directory(. DIR_SRCS)
    add_executable(Sample ${DIR_SRCS})

     4】cmakefiles.txt的解释:

    "#"后面的内容为注释。
    命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。
    PROJECT(sample)命令用来表示项目名称为smaple。
    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)用来限定需要cmake2.6的版本。
    aux_source_directory(<dir> <variable>)该命令会把参数 <dir> 中所有的源文件名称赋值给参数 <variable>。
    ADD_EXECUTABLE(sample ${DIR_SRCS})表示将变量 DIR_SRCS 中的源文件编译成一个名称为sample的可执行文件。

    5】生成VS工程文件和build如下:

    6】生成Eclipse+MinGW的工程文件如下:

    五语法

    ADD_SUBDIRECTORY( src )指明本项目包含一个子目录 src 。

    TARGET_LINK_LIBRARIES( main Test )指明可执行文件 main 需要连接一个名为Test的链接库 。

    六参考

    http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/

    http://en.wikipedia.org/wiki/CMake 

    完!
  • 相关阅读:
    关于java.lang.OutOfMemoryError: Java heap space的错误分析
    对TCP/IP网络协议的深入浅出归纳
    leetcode面试准备:Contains Duplicate I && II
    leetcode面试准备:Count Complete Tree Nodes
    leetcode面试准备: Jump Game II
    leetcode面试准备: Jump Game
    LeetCode解题报告:Linked List Cycle && Linked List Cycle II
    最小栈的实现与优化
    面试:归并排序
    leetcode面试准备:Decode Ways
  • 原文地址:https://www.cnblogs.com/itech/p/2176234.html
Copyright © 2011-2022 走看看