在CSDN上搜索了一下,大部分关于qmake的实例都是链接到Qt库,包括QtCore和QtGui。如果只是想写一个普通的C++命令行程序,链接Qt库显然是使得最终生成的程序尺寸变得臃肿,而且必须要安装庞大的Qt包。
那么如何让qmake不链接到Qt库呢?
默认情况下,qmake是要链接QtCore和QtGui两个库的。即使你什么也不做,因为这是默认行为。
通过以下配置可以解除这种配置。
简单吧,这下清净了,我们明确告知qmake这不是qt程序,只需要qmake为我们生成普通Makefile,其他什么也不要多做。
以下是我为boost asio中一个简单tcp服务器程序写的qmake工程文件:TcpServer.pro。
正如注释中提到的,运行 qmake -makefile -spec linux-g++ TcpServer.pro 生成可用linux g++编译器进行编译的Makefile。
如果我们将 “CONFIG –= qt” 这一行注释掉,及使用qmake的默认配置,那么来比较一下两者的差别。
下面一栏是qmake默认配置下生成的Makefile。可以清晰的看出,默认生成的Makefile增加了Qt宏定义、头文件路径、QtGui和QtCore链接库。而上面一栏是 增加了 ”CONFIG –= qt “配置的生成的Makefile,显然清爽了很多。只有我们指定的库文件。
顺带提一下,qmake中访问环境变量的方法是 $$(env_var),env_var是变量名。 注意是两个美元符加小括号包围哦 ^_^
qmake生成的makefile尺寸还是很精简的,可以清晰看懂。我把上面完整的Makefile贴出来。
以上Makefile作者在 ubuntu 10.04上配合boost_1_43_0 编译通过。
qmake也可以为C++生成windows下的 VC工程 .vcproj。这里不提,qmake文档有详细的说明,利用qmake我们可以为跨平台C++程序管理编译工程。
如何获取qmake
作者在ubuntu上直接执行以下软件包安装命令。