---<Cmake 实践>---

---Ubuntu 14.04

1、创建一个cmake文件目录

 mkdir -p ~/cmake

2、在cmake文件下创建t1子目录

 cd ~/cmake
mkdir t1
cd t1

3、在t1子目录下创建main.c 和 CMakeLists.txt(注意:文件名大小写!)

 touch main.c
touch CMakeListst.txt

其中,main.c文件内容如下:

打开main.c文件:

gedit main.c
  //main.c

  #include<stdio.h>
int main()
{
printf("Hello World from t1 Main!\n");
return ;
}

其中,CMakeLists.txt内容如下:

gedit CMakeLists.txt
 PROJECT(HELLO) #定义工程名称
SET(SRC_LIST main.c) #SET指令用于显式定义变量
MESSAGE(STATUS "This is BINARY dir" ${HELLO_BINARY_DIR}) #STATUS,输出前缀为-的信息
MESSAGE(STATUS "This is SOURCE dir" ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST}) #工程生成一个文件名为hello的可执行文件

另外,CMakeLists.txt可简化为:

 PROJECT(HELLO)
ADD_EXECUTABLE(hello ,main.c)

4、开始构建

当main.c文件及CMakeLists.txt文件创建完成后,进行构建工程,在该目录下运行:

 cmake . (注意命令后面的点号,代表的是本目录)

运行cmake . 指令后,在目录下,可以看到有CMakeFiles、CMakeCache.txt、cmake_install.cmake等文件,并生成了Makefile。

之后,在该目录下输入:make 命令

这时候,目标文件hello已经构建完成,位于当前目录,运行下述指令:

./hello

得到输出:   Hello World from t1 Main!

5、在cmake文件下创建t2目录

将t1工程下的main.c 与 CMakeLists.txt 拷贝到t2目录下

6、在目录t2下添加src文件夹

 cd ~/cmake/t2
mkdir src
mv main.c src

7、在文件夹src下创建一个CMakeLists.txt,添加内容如下:

ADD_EXECUTABLE(hello main.c)

8、在t2目录下(原从t1中拷贝的)CMakeLists.txt修改为:

 PROJECT(HELLO)
ADD_SUBDIRECTORY(src bin)

9、在t2文件路径下,进行编译:

 cmake .
make

												

最新文章

  1. 新入门node.js必须要知道的概念
  2. 如何使用JS来检测游览器是什么类型,或android是什么版本号- 转载
  3. 解决git客户端MINGW32下的“Could not open a connection to your authentication agent.”
  4. android视频播放器开发
  5. Linux Ubuntu常用终端命令
  6. Unity3d:使用uWebKit插件嵌入网页,网页中的flv视频无法播放
  7. 习WebSocket一(WebSocket初识)[转]
  8. 微信小程序开发工具 常用快捷键
  9. boost操作xml 5分钟官方教程
  10. GnuWin,包括FLEX BISON GREP
  11. c#后台弹出提示
  12. C++ Primer 学习笔记_29_STL实践与分析(3) --操作步骤集装箱(下一个)
  13. Spring boot整合Mybatis
  14. mysql数据库优化(三)--分区
  15. NodeJS的url验证库模块url-valid
  16. linux系统编程:用truncate调整文件大小
  17. 【DeepLearning】Exercise:Learning color features with Sparse Autoencoders
  18. 20145335郝昊《网络攻防》Exp5 MS08_067漏洞测试
  19. 面试:C/C++常见库函数实现
  20. Java面向对象六大原则

热门文章

  1. java小程序(课堂作业03)
  2. C#中winform使用相对路径读取文件的方法
  3. 放一个Dynamicinputs corresponding to Dynamicknobs的Node源码
  4. SQL Server孤立账户解决办法
  5. linux 内存映射-ioremap和mmap函数
  6. Mysql 性能优化6【重要】 索引优化
  7. 黄聪:ffmpeg基本用法(转)
  8. vue-router配合vue-cli的实例
  9. Python类方法、静态方法与实例方法 -----类里面不需要实例化参数 和没带self的函数 调用此函数的方法
  10. Flume的Channel