ZZ:新工具CMAKE的使用

JACK posted @ 2009年4月02日 03:40 in programming , 3045 阅读

 转自:
http://hi.baidu.com/%D4%B6%B9%C5%B5%A5%CE%BB/blog/item/29888288267e5f90a5c27270.html


还有关于cmake实践的资料,网址是http://www.qtchina.net/?q=node/161
这几天研究了一下CMake,因为感觉在之后的开发中,我们终有一天需要这个工具。

CMake

Cmake 不再使你在构建项目时郁闷地想自杀了.   --一位KDE开发者。

1,背景知识:
    cmake 是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品,最终形成体系,成为一个独立的开放源代码项目。项目的诞生时间是 2001 年。其官方网站是 www.cmake.org,可以通过访问官方网站获得更多关于 cmake 的信息。cmake的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools之后,他们终于决定为 KDE4 选择一个新的工程构建工具,其根本原因用 KDE 开发者的话来说就是:只有少数几个“编译专家”能够掌握 KDE 现在的构建体系(admin/Makefile.common),在经历了 unsermake, scons 以及cmake 的选型和尝试之后,KDE4 决定使用 cmake 作为自己的构建系统。在迁移过程中,进展异常的顺利,并获得了 cmake 开发者的支持。所以,目前的 KDE4 开发版本已经完全使用 cmake 来进行构建。像kdesvn,rosegarden 等项目也开始使用 cmake,这也注定了 cmake 必然会成为一个主流的构建体系。

2,特点
cmake的特点主要有:
1, 开放源代码(BSD许可证)。2, 跨平台。3, 能够管理大型项目。4, 简化编译构件过程和编译过程。5, 高效率。6, 可扩展。

3,安装cmake
在ubuntu下直接 sudo apt-get install cmake,我装的cmake的版本是2.4-patch 6, ubuntu版本7.04

4, 简单使用
建立一个临时目录 mkdir -p cmake/t1 && cd cmake/t1, 在这个文件夹下写一个最简单的程序main.c。
main.c 文件内容:
//main.c
#include <stdio.h>
int main()
{
     printf("Hello World from t1 Main!\n");
     return 0;
}
在它的同级目录下写一个文件,文件名是CMakeLists.txt(注意文件名大小写),CMakeLists.txt的内容是:
PROJECT (HELLO)
SET(SRC_LIST main.c)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

CMakeLists.txt,脚本内容如下
        #标识我们项目的名称
         PROJECT(my_project)
         #添加glib的include路径
         INCLUDE_DIRECTORIES(/usr/include/glib)
         #将common目录的所有文件名写到名为common_var的变量中去
       AUX_SOURCE_DIRECTORY(common common_var)
         # 将main.c main.h添加到PROJECT_FILE变量中
         SET(PROJECT_FILE main.c main.h)
         # 将common_var变量和PROJECT_FILE变量的内容放到ALL_FILE变量中去
         SET(ALL_FILE ${PROJECT_FILE} ${common_var})
         #根据ALL_FILE来生成可执行文件bt_server
         add_executable (bt_server ${ALL_FILE})
         #链接动态链接库libglib2.0.so和libpthread.so
         target_link_libraries(bt_server libglib-2.0.so libpthread.so)

        恩,编译脚本就这样写完了,简单吧。
        下面的步骤更简单
        在你的project下面建立一个目录,目录名叫build #随便你写什么名字都好,不过推荐用build,显得正规一些:)

         进入终端,然后敲击命令 cmake..     #千万要记得后面的两个点。这表示CMakeLists.txt文件存放在上级目录下

        如果cmake成功,你会看到build目录下生成一个makefile文件。此时在终端下敲击make.你的工程就会被编译成可执行文件.


4.1, 开始构件
在这个工程下运行cmake . (. 代表本目录)
然后就会生成这个文件的makefile.
之后运行 make,就可以生成hello程序了。

就是这点简单的使用吧,详细使用有兴趣的话自己去网上找资料吧~


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter