关于make与CMake

一)概述

make和cmake都是代码自动编译工具,本身不含编译器。

简单的编译可以直接用编译器进行,如:

gcc -c demo.c

g++ main.cpp -Ie:\Qt\4.7.0\include -o main -Le:\Qt\4.7.0\lib -lQtCore4

二) make/nmake/mingw32-make

make是一个自动化编译工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

makefile是make实现编译需要的规则文件,make依据它来批处理编译,makefile的语法:https://blog.csdn.net/u013216061/article/details/70592461

makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile是非常麻烦的,如果换了个平台makefile又要重新修改。

make是linux环境下的命令,也被称为GNU Make,Windows环境下无此命令。

在Windows环境下可以用nmake进行编译,方法是先进入x86/64 native command propmt for vs命令行终端,再用nmake。值得注意的是,nmae是microsoft为VS设计的,其中的许多语法、隐含宏定义名称等与gnu make是不同的。主要差别参见:https://blog.csdn.net/tsaiyong_ahnselina/article/details/17554337

在Windows环境下使用MinGW32/64时,相应的make命令为mingw32-make。

三)cmake/qmake

cmake是make maker,生成各种可以直接控制编译过程的控制器的配置文件,比如makefile、各种IDE的配置文件。

CMake创建工程之前要有CMakeList.txt,该文件的语法见https://blog.csdn.net/afei__/article/details/81201039

Windows 上的CMake有两个版本:命令行和CMake-GUI

1)命令行下使用cmake

(1)对于简单场景,可直接 cmake <path>进行编译,直接编译生成结果。其中<path>为CMakeLists.txt所在路径

(2)可用-G命令指定生成器

(3)每次都用”-G”选项指定生成器比较麻烦,可以将其配置在”PreLoad.cmake”文件中。在CMakeLists.txt所在目录下新建文件”PreLoad.cmake”。例如,可输入:

set(CMAKE_GENERATOR "NMake Makefiles" CACHE INTERNAL "" FORCE)

然后执行"cmake ."即可配置,然后执行"nmake"就可以编译。

2)CMake-GUI

CMake-GUI编译工程一般分为3步:

(1)configure: 配置参数

(2) generate:生成可编译工程,要指定编译器、架构等,相当于命令行的 -G

(3) build: 依据上一步所选编译器进行编译

3)对不同编译器cmake的自动生成文件

cmake可选用的编译器很多,具体的可参看 cmake-gui的提示。面向几个主要的编译器自动生成的文件如下:

(1)所有的编译器

均会在工程目录下生成CMakeFiles目录和CMakeCache.txt,cmake_install.cmake文件

(2)nmake编译器

生成Makefile文件,可直接用nmake进行编译

3)Visual studio 20**

会生成一个项目文件 <proj>.sln和若干个工程文件,一般包括ALL_BUILD.*(用于编译项目内的所有工程), ZERO_CHECK.*(用于检查CMakeList.txt是否改变),和CMakeLists.txt中定义的所有待输出的工程。可以直接用VS打开*.sln文件进行编译

也可以用 cmake --build . 进行编译

(4)ninja

生成build.ninja文件, 可直接用 ninja进行编译

(5)MinGW

生成MinGW Makefiles

4) cmake与VS

如果在装vs2017的时候勾选了cmake,点击新建->项目时会出现cmake选项,可建立cmake工程文件夹。

5)qmake

qmake 是为 Qt 量身打造的类似cmake的makefile生成工具, 在Qt下使用起来非常方便,但功能没有cmake强大。

qmake 需要一个 .pro 文件:,例如:

CONFIG += qt
QT -= gui
SOURCES += main.cpp
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值