如何让qmake 生成的Makefie 不链接Qt库 在CSDN 上搜索了一下,大部分关于qmake 的实例都是链接到Qt 库,包括QtCore 和QtGui。如果只是想写一个普通的C++命令行程序,链接Qt 库显然是使得最终生成的程序尺寸变得臃肿,而且必须要安装庞大的Qt 包。 那么如何让qmake 不链接到Qt 库呢? 默认情况下,qmake 是要链接QtCore 和QtGui 两个库的。即使你什么也不做,因为这是默认行为。 通过以下配置可以解除这种配置。 1. #不需要 QT 2. CONFIG -= qt 简单吧,这下清净了,我们明确告知 qmake 这不是qt 程序,只需要 qmake 为我们生成普通 Makefile,其他什么也不要多做。 以下是我为 boost asio 中一个简单 tcp 服务器程序写的qmake 工程文件:TcpServer.pro。 1. #qmake 命令行 2. #qmake -makefile -spec linux-g++ TcpServer.pro TARGET = TcpServer.bin TEMPLATE = app 3. #不需要 QT 4. CONFIG -= qt 5. #编译 debug 模式 6. CONFIG += debug 7. #指定中间文件目录 8. OBJECTS_DIR = ./debug 9. #BOOST 头文件路径 INCLUDEPATH += $$(BOOST_INCLUDE) INCLUDEPATH += $$(BOOST_INCLUDE) 10. #依赖的boost 库 #技巧:通过 $$(ENV_VAR) 访问环境变量 11. #LIBS += -L$$(BOOST_LIB) -lboost_system -lboost_thread -lboost_date_time -pthread LIBS += -L$$(BOOST_LIB) -lboost_system -lboost_thread -lboost_date_time -lpthread 12. #头文件 13. HEADERS += connection.hpp 14. HEADERS += io_service_pool.hpp 15. HEADERS += server.hpp 16. #源文件 17. SOURCES += connection.cpp 18. SOURCES += io_service_pool.cpp 19. SOURCES += server.cpp 20. SOURCES += main.cpp 正如注释中提到的,运行 qmake -makefile -spec linux-g++ TcpServer.pro 生成可用linux g++编译器进行编译的Makefile。 如果我们将 “CONFIG –= qt” 这一行注释掉,及使用qmake 的默认配置,那么来比较一下两者的差别。 下面一栏是qmake 默认配置下生成的Makefile。可以清晰的看出,默认生成的Makefile增加了Qt 宏定义、头文件路径、QtGui 和 QtCore 链接库。而上面一栏是 增加了 ”CONFIG –= qt “配置的生成的Makefile,显然清爽了很多。只有我们指定的库文件。 顺带提一下,qmake 中访问环境变...