您当前的位置: 首页 > 
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CMakeLists.txt是什么

软件工程小施同学 发布时间:2021-02-14 11:51:31 ,浏览量:0

一、makefile、CMakeLists.txt 1. makefile

makefile是在Linux编译c或者c++代码的时候的一种脚本文件,但是每一个功能都要写一个makefile文件,这样如果这个工程很大,而且相关性比较强的话,makefile的书写就会变得相对繁琐,更要命的是如果以后需要添加新的功能或者是新人需要修改功能的话,看起来就会特别麻烦;

 

2. CMakeLists.txt

cmake的所有语句都写在一个CMakeLists.txt的文件中,CMakeLists.txt文件确定后,直接使用cmake命令进行运行,但是这个命令要指向CMakeLists.txt所在的目录,cmake之后就会产生我们想要的makefile文件,然后再直接make就可以编译出我们需要的结果了。

 

更简单的解释就是cmake是为了生成makefile而存在,这样我们就不需要再去写makefile了,只需要写简单的CMakeLists.txt即可。

 

二、一个单文件的简单的例子

文件名字为main.c 内容如下:

#include 
int main()
{
    printf("Hello World Test!\n");
    return 0;
}

CMakeLists.txt文件内容如下:

project(hello_jelly)
set(APP_SRC main.c)
add_executable(${PROJECT_NAME} main.c)
 
#print message
message(${PROJECT_SOURCE_DIR})

解释代码:

第一个行project不是强制性的,最好加上,这会引入两个变量:

HELLO_BINARY_DIR, HELLO_SOURCE_DIR

 

同时也会定义两个等价的变量:

PROJECT_BINARY_DIR, PROJECT_SOURCE_DIR

 

外部编译要时刻区分这两个变量对应的目录

可以通过message进行输出

message(${PROJECT_SOURCE_DIR})

 

set 命令用来设置变量

 

add_exectuable 告诉工程生成一个可执行文件。

 

add_library 则告诉生成一个库文件。

 

CMakeList.txt 文件中,命令名字是不区分大小写的,而参数和变量是大小写相关的。

 

然后将以上两个文件放在统一目录下面,注意编译产生时候分为两种,

  • 一种是直接在当前源码目录执行cmake命令#cmake ./,但是这样会在当前目录下产生很多临时文件和目录,
  • 另一种方式就是在当前目录新建一个build目录,然后我门进入到build目录,执行命令cmake ../,这样产生的所有临时文件都会生成在build目录下,而不影响源码目录的代码,

 

此处我们采用第二种方法。

我们进入到build目录,执行命令

# cmake ../

然后在当前目录可以看到文件如下

drwxrwxr-x 3 zqq zqq 4096 9月  28 17:12 CMakeFiles
-rw-rw-r-- 1 zqq zqq  993 9月  28 17:12 cmake_install.cmake
-rw-rw-r-- 1 zqq zqq 5479 9月  28 17:12 Makefile

最后再在此目录执行make即可生成相应的可执行程序。

 

 

https://blog.csdn.net/u013896064/article/details/82874152

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.0439s