CMake学习笔记(1)——用CMake编译一个hello world程序

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。
总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。


建立一个名为t1的工程:

编写main.c文件

#include <stdio.h>

int main()
{
	printf("hello world\n");

	return 0;
}


编写一个CMakeLists.txt文件:

PROJECT(HELLO)
SET(SRC_LIST main.c)
MESSAGE(STATUS "THIS IS BINARY DIR " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "THIS IS SOURCE DIR " ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

解释:

PROJECT:用于定义工程名字。这个指令隐式的定义了两个cmake变量:<projectname>_BINARY_DIR 以及<projectname>_SOURCE_DIR,这两个变量分别指定了编译后二进制文件的路径和工程源文件的路径。在这里时HELLO_BINARY_DIR和HELLO_SOURCE_DIR ,可以直接使用PROJECT_BINARY_DIR,PROJECT_SOURCE_DIR,这样改变工程文件名不需要修改这些变量;


SET:用于定义变量,这里是将SRC_LIST;


MESSAGE:用于在终端打印给用户信息;


ADD_EXECUTABLE:生成可执行文件,${}用来引用变量。


然后开始构建:

cmake .
make


生成名为hello的可执行文件,执行:

./hello


得到输出:

hello world

前面的是内部编译,即直接在工程目录下进行构建,生成的中间文件也在工程目录下,这样显得很乱,下面介绍外部编译:

建立一个名为build的目录:

整个工程的目录结构如下:

t1
├── build
├── CMakeLists.txt
└── main.c


进如build目录,进行构建:

cmake ..
make
..代表当前目录的父目录。


这样构建后生成的所有文件都会在build目录中。









  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值