在linux下安装cmake
首先下载源码包
Unix/Linux用户下载cmake-2.*.tar.gz
Windows用户的下载文件有3种,可任选一种:
(1)Windows Source (has \r\n line feeds) cmake-2.8.4.zip CMake的源码文件里面含有测试实例
(2)Windows (Win32 Installer) cmake-2.8.4-win32-x86.exe CMake的安装文件,直接安装即可
(3)Windows ZIP cmake-2.8.4-win32-x86.zip CMake的绿色版软件,免安装。
随便找个目录解压缩
tar -xzvf cmake-2.*.tar.gz
cd cmake-2.*
依次执行:
./bootstrap
make
make install
cmake 会默认安装在 /usr/local/bin 下面
四、从“Hello, world!”开始
了解cmake的基本原理并在系统中安好cmake后,我们就可以用cmake来演示那个最经典的”Hello, world!”了。
第一步,我们给这个项目起个名字——就叫HELLO吧。因此,第一部为项目代码建立目录hello,与此项目有关的所有代码和文档都位于此目录下。
第二步,在hello目录下建立一个main.c文件,其代码如下:
#include
int main(void)
{
printf(”Hello,World\n”);
return 0;
}
第三步,在hello目录下建立一个新的文件CMakeLists.txt,它就是cmake所处理的“代码“。其实,使用cmake管理项目本身也是在编程,所以称之为“代码(或脚本)”并不为过。在CMakeLists.txt文件中输入下面的代码(#后面的内容为代码行注释):
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) #cmake最低版本需求,不加入此行会受到警告信息
PROJECT(HELLO) #项目名称
AUX_SOURCE_DIRECTORY(. SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST
ADD_EXECUTABLE(hello ${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)
至此,整个hello项目就已经构建完毕,可以进行编译了。
第四步,编译项目。
为了使用外部编译方式编译项目,需要先在目录hello下新建一个目录build(也可以是其他任何目录名)。现在,项目整体的目录结构为:
hello/
|– CMakeLists.txt
|– build /
`– main.c
在windows下,cmake提供了图形界面,设定hello为source目录,build为二进制目录,然后点击configure即可开始构建。编译可以在VC++2008下进行,具体见后面的详述。
在linux命令行下,首先进入目录build,然后运行命令(注:后面的“..”不可缺少):
cmake ..
该命令使cmake检测编译环境,并生成相应的makefile。接着,运行命令make进行编译。编译后,生成的所有中间文件和可执行文件会在build目录下。 下面是我在ubuntu上的运行过程:
$ ls
hello
$ cd hello/build/
$ ls
$ cmake ..
– The C compiler identification is GNU
– The CXX compiler identification is GNU
– Check for working C compiler: /usr/bin/gcc
– Check for working C compiler: /usr/bin/gcc — works
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Check for working CXX compiler: /usr/bin/c++
– Check for working CXX compiler: /usr/bin/c++ — works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Configuring done
– Generating done
– Build files have been written to: /home/kermit/Project/cmake/hello/build
$ make
Scanning dependencies of target hello
[100%] Building C object CMakeFiles/hello.dir/main.c.o
Linking C executable hello
[100%] Built target hello
$ ls
CMakeCache.txt CMakeFiles cmake_install.cmake hello Makefile
$ ./hello
Hello,World
上面,我们提到了一个名词,叫外部编译方式。其实,cmake还可以直接在当前目录进行编译,无须建立build目录。但是,这种做法会将所有生成的中间文件和源代码混在一起,而且cmake生成的makefile无法跟踪所有的中间文件,即无法使用”make distclean”命令将所有的中间文件删除。因此,我们推荐建立build目录进行编译,所有的中间文件都会生成在build目录下,需要删除时直接清空该目录即可。这就是所谓的外部编译方式。
阅读(1102) | 评论(0) | 转发(0) |