cmake在windows下使用
简介
首先是:什么是GCC?GCC是一种编译工具,可以实现预编译、编译、汇编、链接整个过程,这整个过程将高级语言翻译成了机器语言。但是,GCC是针对于LINUX的,在windows中并没有,因为微软有自己的开发,叫做MSVC,当然,GCC后来在windows也有,叫做MinGW,MinGW就是GCC在windows下的名称,我们使用它也可以像是GCC之于Linux一样。
其次,为什么会有cmake?当我们的文件很大时,使用GCC是不方便的,所以有了make,make是一个构建生成器,通过写makefile文件来指定特定的项目构建工程,但make也有很多不足,像写makefile时,大工程下是很复杂的,往往改一点,makefile就要改很多地方。于是,就出现了cmake,cmake可以通过写CmakeList.txt,然后通过make,将该文件翻译为之前需要通过写makefile实现的作用,但是却没有makefile那样的副作用。
cmake和gcc用法
怎么使用cmake呢?
写CmakeList.txt,在已建立的工程下,写对应的CmakeList.txt,涉及多个目录就需要多个CmakeList.txt,之间有相互关联。
在终端写cmake .. -Dproj=
-G “MinGW Makefiles”
.. 表示当前目录的上一级,这里具体要看CmakeList.txt的位置,也就是你的文件放置形式。可能你的Cmakelist文件跟你的main文件不再同一级目录,也可能在同一级目录。
“MinGW Makefiles” 表示是使用MinGW,因为是在windows下,是默认有MVSC的,所以不声明的话基本上就是使用MVSC
- 之后再终端写 mingw32-make
如果时在Linux下,直接写make就行,但是windows下面没有make,mingw32-make是Mingw中一起携带的,你也可以将之重命名为make。
这样,就是cmake的用法,之后就会产生一个可执行的exe文件,可以通过./main来运行,./表示当前目录,所以具体要看生成的main.exe文件的位置。
注意:这里是用到了cmake去构建C/C++项目,再用gcc编译生成文件。与vscode的插件是无关的,也就是说不用vscode提供的右上角编译运行按钮。vscode仅作为编写代码的平台。
推荐文章:
捋一捋gcc/g++/MingW/MSVC与make/CMake的关系
CMake入门实战(在C中的Test_C已实现)中针对于多目录多文件的代码可以C++中的代码相结合参考,将多目录下的文件变成静态库或者动态库是一个方法。
思考
- 使用cmake .. -Dproj=
-G “MinGW Makefiles”出现:
1 | -- The C compiler identification is unknown |
分析:这是系统环境变量没有包含gcc路径的原因。添加gcc路径即可。
- 使用vscode插件之间右上角编译运行按钮,有时可以编译,有时会出现找不到该文件的错误?
分析:该插件仅限于单个main.c文件时使用,可以编译运行;但是当使用多文件且有多个目录时,便会出错,这是就要使用cmake和gcc来实现编译运行过程。