关于cmake
各位大佬,有人了解cmake吗,研一小白导师突然让接触这个,不知道这个有啥用,跟普通的C语言编译器有啥区别,不用cmake,可以用其他的熟悉的产品替代吗通过一些了解知道,它只要特性是跨平台,但能否具体通俗讲一下呢,理解能力有限{:5_108:} 本帖最后由 赚小钱 于 2020-7-9 09:52 编辑
cmake 是一个跨平台的构建工具。
原来 *nix 平台,直接使用 makefile,windows 平台使用 sln 工程,对于很多目标是跨平台的应用很不友好,需要写两份。同时,makefile 的语法门槛较高。
而 cmake 提供了一套友好的语法,比如
target_link_libraries
就可以很友好的为二进制文件指定动态链接库
更多教程
而且,cmake 不是独立于 makefile sln 等现有成熟的构建体系之外另起炉灶,而是充当了翻译层
即,允许开发者使用易学,通用的语法,来编写构建规则(CMakeLists.txt) ,cmake 负责将CMakeLists.txt 进一步编译为 makefile,sln
补充一下,前天自己使用 cmake 学到一个超赞的功能 FetchContent,c++ 有一些库是只有头文件的,FetchContent 就支持,只需要在 CMakeLists.txt 中声明要使用的库头文件位置(URL),在编译的时候,cmake 自动帮助你下载,简直不要更方便了。 赚小钱 发表于 2020-7-9 09:49
cmake 是一个跨平台的构建工具。
原来 *nix 平台,直接使用 makefile,windows 平台使用 sln 工程,对于 ...
他跟普通编译器比如说VS,有区别吗,或者说区别在哪里呢?有一点粗浅的理解,就是讲各个需要的文件打包,然后可以跨平台使用,这样理解的对吗{:5_109:} Tau-li 发表于 2020-7-9 10:15
他跟普通编译器比如说VS,有区别吗,或者说区别在哪里呢?有一点粗浅的理解,就是讲各个需要的文件打包, ...
cmake 不是编译器,是一个项目构建工具。
编译器是指,将源代码,转换成字节码(java) 或者 二进制(c) 的东西。比如 javac(java), gcc, clang, 不记得微软的 c 编译器叫什么了。
而 cmake 的作用是管理你的项目
比如,在命令行编译程序需要 指定 -I 头文件的位置, -L 库文件的位置 -o 编译输出到哪里。
使用 vs 的时候,要在项目设置里面填入各种信息。
这是 cmake 要做的事情,允许使用类似写代码的方式,来管理你的 c++ 项目,cmake 提供了一些函数 来实现上面说的 -I -L 的方式,使用起来很接近于编程语言。
我在上面也说了,cmake 的输出产物是 makefile(*nix), sln(win) ,根本还没有到编译器 级别。
最终,编译还是要调用 gcc clang 等。
vs 不是编译器,编译器是最终执行的一个二进制文件,vs 叫做 IDE,集成开发环境。
页:
[1]