CMake学习笔记(1)——⽤CMake编译⼀个helloworld程序CMake学习笔记(1)——⽤CMake编译⼀个hello world程序
注意:
<中message 输出的消息是在执⾏cmake的时候输出到终端的。
eg:
执⾏cmake .
CMake是⼀个⽐make更⾼级的编译配置⼯具,它可以根据不同平台、不同的编译器,⽣成相应的Makefile或者vcproj项⽬。
通过编写,可以控制⽣成的Makefile,从⽽控制编译过程。CMake⾃动⽣成的Makefile不仅可以通过make命令构建项⽬⽣成⽬标⽂件,还⽀持安装(make install)、测试安装的程序是否能正确执⾏(make test,或者ctest)、⽣成当前平台的安装包(make package)、⽣成源码包(make package_source)、产⽣Dashboard显⽰数据并上传等⾼级功能,只要在中简单配置,就可以完成很多复杂的功能,包括写测试⽤例。
如果有嵌套⽬录,⼦⽬录下可以有⾃⼰的。
总之,CMake是⼀个⾮常强⼤的编译⾃动配置⼯具,⽀持各种平台,KDE也是⽤它编译的,感兴趣的可以试⽤⼀下。
建⽴⼀个名为t1的⼯程:
编写main.c⽂件
1. #include <stdio.h>
2.
3. int main()
4. {
5. printf("hello world\n");
6.
7. return 0;
8. }
编写⼀个⽂件:
1. PROJECT(HELLO)
2. SET(SRC_LIST main.c)
3. MESSAGE(STATUS "THIS IS BINARY DIR " ${HELLO_BINARY_DIR})
4. MESSAGE(STATUS "THIS IS SOURCE DIR " ${HELLO_SOURCE_DIR})
5. 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:⽣成可执⾏⽂件,${}⽤来引⽤变量。
然后开始构建:
1. cmake .
2. make
⽣成名为hello的可执⾏⽂件,执⾏:
./hello
得到输出:
hello world
前⾯的是内部编译,即直接在⼯程⽬录下进⾏构建,⽣成的中间⽂件也在⼯程⽬录下,这样显得很乱,下⾯介绍外部编译:
建⽴⼀个名为build的⽬录:
整个⼯程的⽬录结构如下:
1. t1
2. ├── build
3. ├──
4. └── main.c
进如build⽬录,进⾏构建:
1. cmake ..
2. make
..代表当前⽬录的⽗⽬录。
为什么现在都用cmake这样构建后⽣成的所有⽂件都会在build⽬录中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论