1.简介:
  qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。是qt工具包的一部分.在Unix&linux上写程式的人大概都碰过Makefile。用 make 来开发和编译程式的确很方便,可是要写出一个 Makefile就不简单了,手写Makefile是比较困难并且容易出错的,这阻挡了很多一部分的linux爱好者加入linux程序开发的阵营。
  虽然Open Source Software也有GNU Automake和GNU Autoconf两个软件可以生成makefile文件,但是对于一个简单的项目,使用Automake和Autoconf就有点杀鸡也用宰牛刀了.使用qmake完全可以符合你的要求.Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。
  
   2.安装qmake
  在linux平台上,安装完qt以及相关的qt工具包,qmake就已经被安装好了.你唯一要注意的就是QTDIR值的设定,这个必须设置到Qt被安装到的地方。如:/usr/lib/qt3/,以及qmake可执行文件的路径加到PATH路径中.
  
   3. 一个简单的例子
  用vi写个hello.c ,
  #include <stdio.h>
  int main(int argc, char** argv)
  {
  printf("Hello, world!/n");
  return 0;
  }
  创建qmake需要的项目文件(hello.pro),
  SOURCES = hello.cpp
  CONFIG = qt warn_on release
  Makefile可以像这样由".pro"文件生成:
  qmake -o Makefile hello.pro
  现在你的目录下已经产生了一个 Makefile 文件,输入"make" 指令就可以开始编译 hello.c 成执行文件,执行 ./hello 和 world 打声招呼吧!打开这个Makefile文件看看,是不是很专业啊!
  
   4.高级操作技巧
  当然,在实际使用过程中,我们的工程不可能象这个程序这样简单的,它可能有多个目录,多个头文件,多个源文件,需要链接器它不同的链接库等等情况。别急,让我和你慢慢道来。这些都是非常容易用qmake来实现的。我们从一个更加复杂的项目文件为例和你详细的讲诉qmake的高级技巧:
  项目文件示例:
  SOURCES = myqt.cpp
  SOURCES = main.cpp
  HEADERS = myqt.h
  FORMS = xsimform.ui
  TEMPLATE = lib
  CONFIG = debug warn_on qt thread x11 plugin
  TARGET = ../bin/panel_qt
  INCLUDEPATH = ../../../../xsim ../../../../xsim/IMdkit
  DEFINES = BDB_VERSION4 OS_LINUX
  从这个文件可以知道,SOURCES变量指向项目中的源文件,当项目中有多个源文件时,我们需对项目中的每一个源文件都这样做,直到结束:
  SOURCES = hello.cpp
  SOURCES = main.cpp
  当然,如果你喜欢使用像Make一样风格的语法,你也可以写成这样,一行写一个源文件,并用反斜线结尾,然后再起新的一行:
  SOURCES = hello.cpp main.cpp
  HEADERS变量指向项目中的头文件,多个头文件的时候,和多个源文件的解决方法一致。
  FORMS变量指向项目中使用到的窗体文件(qtdesign设计的.ui文件),qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。没有的话或者非qt程序可以不写。
  TEMPLATE变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:
  app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  lib - 建立一个链接库的makefile。
  vcapp - 建立一个应用程序的Visual Studio项目文件。
  vclib - 建立一个库的Visual Studio项目文件。
  subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的mkefile。
  CONFIG变量变量指定了编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别。
  下面这些选项控制着使用哪些编译器标志:
  release - 应用程序将以release模式连编。如果"debug"被指定,它将被忽略。
  debug - 应用程序将以debug模式连编。
  warn_on - 编译器会输出尽可能多的警告信息。如果"warn_off"被指定,它将被忽略。
  warn_off - 编译器会输出尽可能少的警告信息。
  下面这些选项定义了所要连编的库/应用程序的类型:
  qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。
  thread - 应用程序是一个多线程应用程序。
  x11 - 应用程序是一个X11应用程序或库。
  windows - 只用于"app"模板:应用程序是一个Windows下的窗口应用程序。
  console - 只用于"app"模板:应用程序是一个Windows下的控制台应用程序。
  dll - 只用于"lib"模板:库是一个共享库(dll)。
  staticlib - 只用于"lib"模板:库是一个静态库。
  plugin - 只用于"lib"模板:库是一个插件,这将会使dll选项生效。
  TARGET变量指定生成的二进制代码的路径和文件名,如果建立的是一个链接库的话,它会在文件名前面自动加上"lib"和在最后自动加上".so". 
 我们在使用过程中可能会使用到另外的一些函数库,链接库等。函数库的头文件指定使用INCLUDEPATH变量,其它链接库的指定可以通过LIBS 变量来指定,例LIBS = -lmath -L/usr/local/lib
  DEFINES变量的指定就如同make的-D选项一样。
  
   结束语
  Autoconf 和 Automake 功能十分强大,但对于普通用户来说,太过复杂。qmake方便、简单、快捷,是一个轻量级的makefile生成工具,虽然它是qt工具包的一部分,但它也完全可以用来进行其它程序makefile文件的生成,对于大多数人来说,它已经是非常的够用了。你也可以从qt提供的许多现存的源程序中找到相关的.pro项目文件,它们是学习qmake 更多技巧的最佳范例。
  这篇简介只用到了 qmake 的一些皮毛罢了,希望这篇文件能帮助你对产生 Makefile有个简单的依据。

Linux 用qmake快速生成makefile相关推荐

  1. linux清除configure文件_在Linux操作系统下自动生成Makefile的方法

    在Linux操作系统下进行开发,编写Makefile似乎是不可缺少的事情.但是对于一个比较大的工程,编写一个符合规范的Makefile并非易事.而且由于Makefile的各种显式,隐式规则,加之平时并 ...

  2. linux系统中自动生成snap文件_在Linux操作系统下自动生成Makefile的方法

    在Linux操作系统下进行开发,编写Makefile似乎是不可缺少的事情.但是对于一个比较大的工程,编写一个符合规范的Makefile并非易事.而且由于Makefile的各种显式,隐式规则,加之平时并 ...

  3. 巧用qmake工具生成专业的makefile

    问题描述 一般来说在Linux下编程写个测试程序,都需要制作一个makefile文件,但是如果自己手动编写每个还是比较麻烦,而且看上去也不太专业.而如果用autoconf工具生成也还是需要加入一些手动 ...

  4. linux dd 截文件,Linux使用dd命令快速生成大文件(转)

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  5. linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤

    前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦.我们可以利用autoconf来生成一个Makefile,尤其在大型工 ...

  6. Linux dd命令截取文件,linux使用dd命令快速生成大文件

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  7. linux makefile文件怎么生成,Makefile文件生成

    所必须的软件:autoconf (generate configuration script [configuration]) automake( aclocal:automatically gene ...

  8. 自动生成Makefile的全过程详解

    automake/autoconf入门 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefil ...

  9. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

最新文章

  1. 关于BP神经网络的大牛的论述
  2. boost::qvm::deduce_scalar相关的测试程序
  3. linux window命令大全,Windows 与 Linux->vim中常用命令大全
  4. java.util.UnknownFormatConversionException: Conversion = ‘,‘ 解决
  5. 测试用例的测试编号是自己定义的还是别人给的_初级软件测试工程师必须掌握的东西...
  6. MS SQL入门基础:更改数据库
  7. linux perl开发工具,专家推荐 几款常用Perl开发工具
  8. 第六:Pytest中的setup/teardown
  9. 4.数据库的连接(编目)-远程连接
  10. Synopsys MetaWare for Linux 安装与编译指南
  11. 【LeetCode】【数组】题号:*41,最小正正数
  12. controller层没反应_打过蜡的石材再做结晶没效果怎么办?
  13. u3d目标与摄像机之间的遮挡物变为透明
  14. HTML设为首页/加入收藏代码
  15. [Python从零到壹] 七.网络爬虫之Requests爬取豆瓣电影TOP250及CSV存储
  16. JS中的单引号和双引号
  17. Web服务器配置管理
  18. 2015年微信营销趋势分析与归纳!
  19. 自学转行前端找到第一份前端工作,做得很吃力,被劝退怎么办?
  20. 第一天之导入Vuetify的坑

热门文章

  1. python画三维几何图-Python常见几何图形绘制
  2. 自学python好找工作吗-自学Python如何找工作?多久能找到工作?
  3. 用python画关系网络图-python networkx 包绘制复杂网络关系图的实现
  4. python课程怎么样-python课程体系是怎么样的?
  5. python兼职 在家工作-在家兼职的人或者是自由职业的人都在做什么?
  6. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识
  7. python自学路线-Python最佳学习路线
  8. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)
  9. UVa10382 - Watering Grass(贪心算法)
  10. 为何Java中子类重写方法的访问权限不能低于父类中权限