程序编译之qmake、make、makefile、库文件

简单介绍

1、gcc

gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等),可以通过gcc命令逐个进行编译。

2、make

当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大。make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

3、makefile

makefile是什么?简单的说就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,make工具就根据makefile中的命令进行编译和链接的。makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修,非常麻烦。

4、cmake

为了修复3的问题,出现了cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
cmake根据一个叫CMakeLists.txt文件去生成makefile。最后CMakeLists.txt文件谁写啊?亲,是你自己手写的。当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形

5、qmake

qmake类似于cmake,也可以通过用户定义的pro文件生成对应的makefile。
qmake工具就是Qt公司制造出来,用来生成Qt专用makefile文件,这种makefile文件就能自动智能调用moc和uic对源程序进行预处理和编译。qmake当然必须也是跨平台的,跟cmake一样能对应各种平台生成对应makefile文件。qmake是根据Qt 工程文件(.pro)来生成对应的makefile的。工程文件(.pro)相对来说比较简单,一般工程你都可以自己手写,但是一般都是由Qt的开发环境 Qt Creator自动生成的,你还是只需要按下那个邪恶三角形就完事了。由于qmake很简单很好用又支持跨平台,而且是可以独立于它的IDE,所以你也可以用在非Qt工程上面,照样可以生成普通的makefile,只要在pro文件中加入CONFIG -= qt 就可以了。

因为一直用QT写程序,下面介绍简单的qmake的使用

QT += core
QT -= gui

CONFIG += c++11 #默认支持C++11

LIBS += -levent
LIBS += -levent_core
LIBS += -levent_extra
LIBS += -L/usr/lib/mysql/lib64 -lmysqlcppconn

TARGET = Libevent_server
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

HEADERS += \
    queue.h

1、注释

你可以为项目文件添加注释。注释由“#”符号开始,一直到这一行的结束。

2、TEMPLATE模板变量

模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择赋值:

  • app:建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  • lib:建立一个库的makefile。
  • vcapp :建立一个应用程序的Visual Studio项目文件。
  • vclib:建立一个库的Visual Studio项目文件。
  • subdirs:这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

1、app模板
app模板告诉qmake为建立一个应用程序生成一个Makefile。当使用这个模板时,下面这些qmake系统变量是被承认的。你应该在你的.pro文件中使用它们来为你的应用程序指定特定信息。
下面仅仅列举一些常用的变量名称,具体配置选项请参考Qt帮助条目:qmake Variable Reference

  • CONFIG:指定项目配置和编译器选项。
  • HEADERS:定义项目的自定义的头文件。
  • INCLUDEPATH:指定在编译项目到哪里去找哪些#include<>的文件。例如INCLUDEPATH = c:/msdev/include d:/stl/include
  • LIBS:依赖库的路径和名称 -L{xxdirxx} -l{xxnamexx},指定要链接到项目中的库列表。-l(库)和-L(库路径)标志使用路径下的某个库。
    unix:LIBS += -L/usr/local/lib -lmath#使用目录下面含有math字符的库
    win32:LIBS += c:/mylibs/math.lib
  • SOURCES:指定项目中所有源文件列表。
    SOURCES = myclass.cpp \
    login.cpp \
    mainwindow.cpp
  • TARGET:指定目标文件的名称。默认是项目文件的名称。
    TEMPLATE = app
    TARGET = myapp
    SOURCES = main.cpp
  • DESTDIR:指定放置目标文件的目录。DESTDIR = ../../lib= ../../lib
  • OBJECTS_DIR:放置obj中间文件的目录。OBJECTS_DIR = ../myproject/tmp

2、lib模板
lib模板告诉qmake为建立一个库而生成makefile。当使用这个模板时,除了app模板中提到系统变量,还有一个VERSION是被支持的。你需要在为库指定特定信息的.pro文件中使用它们,VERSION - 目标库的版本号,比如,2.3.1。

3、其他模板
暂时使用不到,这里不学习,需要用的时候再细心学习。

3、变量操作符

1、=

简单分配一个值给一个变量。TARGET = myapp,这将会设置TARGET变量为myapp。这将会删除原来对TARGET的任何设置。

2、+=

将会向一个变量的值的列表中添加一个值。DEFINES += QT_DLL,这将会把QT_DLL添加到被放到makefile中的预处理定义的列表中。

3、-=

将会从一个变量的值的列表中移去一个值。DEFINES -= QT_DLL
这将会从被放到makefile中的预处理定义的列表中移去QT_DLL。

4、*=

仅仅在一个值不存在于一个变量的值的列表中的时候,把它添加进去。DEFINES *= QT_DLL,只用在QT_DLL没有被定义在预处理定义的列表中时,它才会被添加进去。

5、~=

这个操作符将会替换任何与指定的值的正则表达式匹配的任何值。DEFINES ~= s/QT_[DT].+/QT,这将会用QT来替代任何以QT_D或QT_T开头的变量中的QT_D或QT_T。

4、作用域

win32:DEFINES += QT_DLL
//或
win32 {
    DEFINES += QT_DLL
}

如果在Windows平台上使用qmake,QT_DLL定义就会被添加到makefile中。如果在Windows平台以外的平台上使用qmake,这个定义就会被忽略。具体这个只有在跨平台时候需要使用到。假如以后需要写这种代码,再仔细查看。这里暂且告一段落。

库文件

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
VSCode 是一款功能强大的代码编辑器,支持多种编程语言。要在 VSCode 中使用 qmake 编译 C 程序,可以采取以下步骤: 第一步是在 VSCode 中安装 C/C++ 插件。打开 VSCode,点击左侧的扩展图标(四个方块的图标),搜索并安装 "C/C++" 插件。这个插件将为我们提供 C/C++ 开发所需的功能和语法高亮。 第二步是创建一个新的 C 程序项目。在 VSCode 中打开命令面板(快捷键 Ctrl+Shift+P),输入 "C/C++: New C/C++ Project",选择 "Executable"(可执行文件)选项,并输入项目的名称和保存的路径。这将在所选路径下创建一个新的文件夹,并生成一个示例的 C 源文件。 第三步是设置项目的编译器选项。在 VSCode 中打开项目文件夹,找到 ".vscode" 文件夹,并在其中创建一个名为 "c_cpp_properties.json" 的新文件。在该文件中,使用 JSON 格式配置 C 和 C++ 编译器的路径和选项。 第四步是在项目中添加一个名为 "Makefile" 的文件。在项目文件夹下创建一个名为 "Makefile" 的新文件,用来指示编译器如何编译和链接程序。在 Makefile 文件中,使用 qmake 命令生成 Makefile,并使用 make 命令进行编译。 第五步是配置 VSCode 中的任务。在 VSCode 中打开命令面板,输入 "Tasks: Configure Default Build Task",选择 "g++ build active file" 作为默认的构建任务。然后,打开生成的 "tasks.json" 文件,并修改其中的 "command" 字段为 "make"。 最后一步是编译并运行 C 程序。在 VSCode 中打开 C 源文件,按下快捷键 Ctrl+Shift+B 进行编译,或者通过命令面板选择 "Tasks: Run Build Task"。如果编译成功,将在输出窗口显示编译结果。然后,可以按下 F5 键或通过命令面板选择 "Debug: Start Debugging",来运行程序并进行调试。 通过以上步骤,我们就可以在 VSCode 中使用 qmake 编译 C 程序了。这个过程中,我们需要安装插件、创建项目、配置编译器选项、添加 Makefile 文件、配置构建任务,然后就可以进行编译和运行了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时需要偏执狂

请我喝咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值