CMake使用入门

假设有文件main.cpp,内有main函数,函数内编写了输出Hello world的简单代码。

想编译该代码,需要做以下几步

1.在代码目录下新建CMakeLists.txt

这个文件阐述了产生Makefile的细节,例如针对哪个平台怎么编译,编译哪几个文件,包含哪个静态库等等。在Windows下工作的时候,这些东西都是VS帮忙完成的,当然,在linux下也是有集成开发环境的,但CMake其实更加的强大。(至于具体怎么强大,慢慢就知道了)


2.编辑CMakeLists.txt,输入:

[plain]  view plain copy print ?
  1. PROJECT(HELLO) #这条命令的意思是:工程名为HELLO  
  2. ADD_EXECUTABLE(hello main.cpp) #这条命令的意思是:生成一个可执行文件,名叫hello,编译main.cpp(如果有多个CPP,就都写上,以空格分割)。  

保存,退出


3.在代码目录下输入cmake .(注意,这里有个“.”),回车

“.”的意思是当前目录,这个命令简单来讲就是根据当前目录下的CMakeLists.txt创建Makefile了,这时该目录下应该会出现Makefile以及CMake的一些中间文件


4.然后输入make(单线程编译)或者make -jN(多线程编译:例如make -j4,即使用4个线程编译),根据CMake生成的Makefile编译,此时,在该目录下应该就出现了一个名为hello的可执行文件了


接着,问题来了:如果代码目录下有很多文件,难道要在CMakeLists.txt里一一列举吗?这是何其蛋疼的事情?当然,CMake不会这样对待我们的。

只需在ADD_EXECUTABLE之前,加上命令:

[plain]  view plain copy print ?
  1. FILE(GLOB_RECURSE SRC_LIST "*.cpp")  

这个命令将把该目录下及所有子文件夹内的所有后缀为.cpp的文件的路径,全部放入SRC_LIST这个变量中。

然后,将ADD_EXECUTABLE这句修改一下,使用SRC_LIST这个变量作为ADD_EXECUTABLE的第二个参数:

[plain]  view plain copy print ?
  1. ADD_EXECUTABLE(hello ${SRC_LIST}) #在CMakeLists中,引用变量的方法为${变量名}  

这样一来,无论工程目录下有多少个文件,都无需再手动去修改CMakeLists.txt了。

当工程加入新的文件时,只需使用cmake .命令,让CMake重新生成Makefile就一切OK。

如果工程的文件/目录没有发生增删,要重新编译只需make命令就可以了。


转载自http://blog.csdn.net/xocoder/article/details/8546907

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值