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++的工程来说,这些就已经足够了。
cmake版本的 hello world …
@nihui 刚刚1嘛……别着急……
good enough
言简意赅啊……放假了我学学……