My CMake Tutorial 1

CMake 是一个跨平台的开源构建系统。

1、CMake的诞生

既然维基百科有我就不多说了。

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

2、为什么要使用CMake

http://lwn.net/Articles/188693/  Why the KDE project switched to CMake — and how

原因之一是跨平台,本来他们想采用 SCons 作为构建系统, 但在跨平台上遇见了许多问题。CMake的优势在于它只依赖于C++编译器,跨平台,可以生成各个平台特定的Makefile和工程文件,并且支持单元测试。

另外一点就是性能,但我一时间找不到具体的引用了。

3、使用CMake的基本方法

mkdir build
cd build
cmake ..
make
make install

针对一般用户来说就是以上内容,和当年的传统 configure make 很像吧?

4、第一个项目

cmake_minimum_required (VERSION 2.6)
project(test)

add_executable(test test.cpp)

cmake项目一开始都需要指定cmake的最低版本,一般来说2.6即可,最新版是2.8.6。第二行制定项目名称,其次就是添加一个可执行文件。源代码是 test.cpp 。这样cmake就会编译生成一个test的可执行文件。

当然一个好习惯是为一堆文件设置一个变量名。

例如:http://code.google.com/p/fcitx/source/browse/src/core/CMakeLists.txt

 set(FCITX_SOURCES
     fcitx.c
     errorhandler.c
 )

设置了一个名为FCITX_SOURCES的变量,引用

上面的链接中还出现了一些新命令,那么我们也来一一解释:

install(TARGETS fcitx RUNTIME DESTINATION ${bindir})

将 target fcitx安装到 ${bindir} 目录下。

target_link_libraries(fcitx fcitx-core ${LIBEXECINFO_LIBRARIES})

fcitx这个target和fcitx-core,以及 ${LIBEXECINFO_LIBRARIES} 进行link。

用过makefile的人对target一定不陌生。fcitx这个target在那里定义的呢?就是在上面的add_executable那里定义的。类似add_executable的还有add_library,用于构建库而不是可执行文件。

至此针对一个简单的C/C++的工程来说,这些就已经足够了。

This entry was posted in cmake and tagged . Bookmark the permalink.

4 Responses to My CMake Tutorial 1

  1. nihui says:
    Firefox 8.0 Windows 7

    cmake版本的 hello world …

  2. csslayer says:
    Firefox 9.0 GNU/Linux x64

    @nihui 刚刚1嘛……别着急……

  3. multiple1902 says:
    Firefox 7.0.1 GNU/Linux x64

    good enough

  4. 右京样一 says:
    Firefox 9.0.1 GNU/Linux

    言简意赅啊……放假了我学学……

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.