refers to: http://qt-project.org/doc/qt-4.8/qmake-tutorial.html
qmake是Qt的编译工具,可以针对不同的平台和不同的语言。qmake基本一个项目文件(.pro)生成Makefile。
qmake自动包含moc和uic工具。
moc:Meta-Object Compiler是一个工具,用来处理Qt中的C++扩展部分。Qt的类会包含Q_OBJECT宏来支持信号槽,运行时类型信息和动态属性等机制。moc会读取头文件,如果有qt的类,则会把对应的Q_OBJECT实现放在cpp文件中,这就qt程序编译会产生moc_开头的文件。
uic: User Interface Compiler会基于UI定义文件(.ui)产生c++头文件。.ui文件是以XML格式存放的。Qt提供一个工具可以可视化创建界面和.ui文件,这就是Qt Designer.
qmake tutorial
设定有三个文件 hello.cpp hello.h main.cpp,
首先要创建项目文件.pro,以文本的形式编辑,指定源文件
SOURCES = main.cpp \
hello.cpp
或者用+=
SOURCES = main.cpp
SOURCES += hello.cpp
指定头文件HEADERS和SOURCES一样处理
HEADERS += hello.h
目标名会自动和项目文件名一样。如果项目文件是abc.pro,那目标名就是abc.exe。也可以指定
TARGET = abc
CONFIG变量一定要指定,这个变量指定了项目配置和编译选项。
CONFIG += qt
说明目标文件是一个Qt的应用程序,需要加载Qt的库和头文件. 具体参数(http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#config)
完整的项目文件
CONFIG += qt
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
用qmake -o Makefile hello.pro生成Makefile
也可以用下面的,生成Visual Studio的项目文件
qmake -tp vc hello.pro
增加平台相关文件
win32 {
SOURCE += win32specific.cpp
}
unix{
SOURCE += unixspecific.cpp
}
注意:{的位置,不能另起一行。
我是直接从源码包开始编译的,然后没有安装。直接用在cmd里,是找不到qmake的。所以要手动指定路径。
然后执行qmake -o Makefile hello.pro时,会出现QMAKESPEC has not been set的错误。可以在当前cmd里设置一下这个环境变量
QMAKESPEC=C:\Qt\4.8.4\mkspecs\win32-msvc2012
我看文档中有说可以在项目文件里设置,但我没有找到具体位置,也没尝试成功。可能会有其它的办法。但我用的就是这个
方法。
刚刚试出一个,在qmake命令参数中指定绝对路径(那相对路径呢?)
qmake -o Makefile -spec C:\Qt\4.8.4\mkspecs\win32-msvc2012 hello.pro