qmake
是一个协助简化跨平台进行专案开发的构建过程的工具程式,也是Qt附带工具之一。可以根据项目环境构建.pro项目文件,再根据项目文件生成Makefile文件。相对于手写一个项目Makefile来说,使用qmake生成Makefile比较简便。
查看qmake
Ubuntu下已经安装好Qt
qmake -v
可能会出现错误
qmake: could not
exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’: No such
file or directory
是因为在/usr/lib/x86_64-linux-gnu/qt4/bin/qmake这个目录下没有qmake程式文件。 找到路径:/usr/lib/x86_64-linux-gnu/qt-default/qtchooser
vim default.conf
将第一行:/usr/lib/x86_64-linux-gnu/qt4/bin/qmake改成自己Qt安装的路径/opt/Qt5.5.0/5.5/gcc_64/bin 再执行
qmake -v
可以看到qt版本。
查看qmake帮助文档
qmake - h
Usage: /opt/Qt5.5.0/5.5/gcc_64/bin/qmake
[mode
] [options
] [files
]
QMake has two modes, one mode
for generating project files based on
some heuristics, and the other
for generating makefiles. Normally you
shouldn
't need to specify a mode, as makefile generation is the default
mode for qmake, but you may use this to test qmake on an existing project
Mode:
-project Put qmake into project file generation mode
In this mode qmake interprets files as files to
be built,
defaults to *; *; *; *.ts; *.xlf; *.qrc
Note: The created .pro file probably will
need to be edited. For example add the QT variable to
specify what modules are required.
-makefile Put qmake into makefile generation mode (default)
In this mode qmake interprets files as project files to
be processed, if skipped qmake will try to find a project
file in your current working directory
Warnings Options:
-Wnone Turn off all warnings; specific ones may be re-enabled by
later -W options
-Wall Turn on all warnings
-Wparser Turn on parser warnings
-Wlogic Turn on logic warnings (on by default)
-Wdeprecated Turn on deprecation warnings (on by default)
Options:
* You can place any variable assignment in options and it will be *
* processed as if it was in [files]. These assignments will be parsed *
* before [files]. *
-o file Write output to file
-d Increase debug level
-t templ Overrides TEMPLATE as templ
-tp prefix Overrides TEMPLATE so that prefix is prefixed into the value
-help This help
-v Version information
-after All variable assignments after this will be
parsed after [files]
-norecursive Don't
do a recursive search
-recursive Do a recursive search
-set
<prop
> <value
> Set persistent property
-unset
<prop
> Unset persistent property
-query
<prop
> Query persistent property. Show all
if <prop
> is empty.
-cache
file Use
file as cache
[makefile mode only
]
-spec spec Use spec as QMAKESPEC
[makefile mode only
]
-nocache Don
't use a cache file [makefile mode only]
-nodepend Don't generate dependencies
[makefile mode only
]
-nomoc Don
't generate moc targets [makefile mode only]
-nopwd Don't
look for files
in pwd [project mode only
]
qmake语法
qmake
[mode
] [options
] [files
]
模式有两种: -project:根据工程生成.pro项目文件。 -makefile:根据.pro项目文件生成makefile文件。
qmake生成makefile文件简单测试
创建一个test工程目录,目录下有三个目录分别是:a,b,m;a目录下有a.c,a.h;b目录下有b.c,b.h;m目录下有main.c。
a.c
#include <stdio.h>
#include "a.h"
int a(void)
{
printf("call a!\n");
return 0;
}
a.h
#ifndef _A_H
#define _A_H
int a(void);
#endif
b.c
#include <stdio.h>
#include "b.h"
int b(void)
{
printf("call b!\n");
return 0;
}
b.h
#ifndef _B_H
#define _B_H
int b(void);
#endif
main.c
#include <stdio.h>
#include "../a/a.h"
#include "../b/b.h"
int main(int argc
, char ** argv
)
{
if(argc
> 1){
printf("%s\n",argv
[1]);
}
printf("hello, linux world!\n");
a();
b();
return 0;
}
在test目录下生成.pro
qmake -project
生成Makefile
qmake -makefile test.pro -o Makefile
make生成执行文件