Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1694558
  • 博文数量: 206
  • 博客积分: 1450
  • 博客等级: 上尉
  • 技术积分: 2285
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-11 11:38
个人简介

学习永无止境!!

文章分类

全部博文(206)

文章存档

2022年(5)

2019年(3)

2018年(8)

2017年(32)

2016年(7)

2015年(13)

2014年(44)

2013年(24)

2011年(6)

2010年(17)

2009年(46)

2008年(1)

分类: LINUX

2017-07-06 17:36:24

  在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目录下,需要删除时直接清空该目录即可。这就是所谓的外部编译方式。

阅读(1038) | 评论(0) | 转发(0) |
0

上一篇:vim中ctags使用

下一篇:linux下tensorflow安装

给主人留下些什么吧!~~