如何让qmake生成的Makefie不链接Qt库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何让qmake生成的Makefie不链接Qt库
在CSDN上搜索了一下,大部分关于qmake的实例都是链接到Qt库,包括QtCore和Q tGui。
如果只是想写一个普通的C++命令行程序,链接Qt库显然是使得最终生成的程序尺寸变得臃肿,而且必须要安装庞大的Qt包。
那么如何让qmake不链接到Qt库呢?
默认情况下,qmake是要链接QtCore和QtGui两个库的。
即使你什么也不做,因为这是默认行为。
通过以下配置可以解除这种配置。
1.#qmake 命令行
2.#qmake -makefile -spec linux-g++ TcpServer.pro TARGET = TcpServe
r.bin TEMPLATE = app
3.#不需要QT
4.CONFIG -= qt
5.#编译debug模式
6.CONFIG += debug
7.#指定中间文件目录
下面一栏是qmake默认配置下生成的Makefile。
可以清晰的看出,默认生成的Makefile 增加了Qt宏定义、头文件路径、QtGui和QtCore链接库。
而上面一栏是增加了”CON FIG –= qt “配置的生成的Makefile,显然清爽了很多。
只有我们指定的库文件。
顺带提一下,qmake中访问环境变量的方法是$$(env_var),env_var是变量名。
注意是两个美元符加小括号包围哦^_^
qmake生成的makefile尺寸还是很精简的,可以清晰看懂。
我把上面完整的Makefile 贴出来。
1.############################################
#################################
2.# Makefile for building: TcpServer.bin
3.# Generated by qmake (2.01a) (Qt
4.6.2) on: ?? 8? 9 23:32:28 2010
4.# Project: TcpServer.pro
5.# Template: app
6.# Command: /usr/bin/qmake -spec /usr/share/qt4/mkspecs/linux-g+
+ -unix -o Makefile TcpServer.pro
7.############################################
#################################
8.
9.####### Compiler, tools and options
10.
= gcc
12.CXX = g++
13.DEFINES =
14.CFLAGS = -pipe -g -Wall -W $(DEFINES)
15.CXXFLAGS = -pipe -g -Wall -W $(DEFINES)
16.INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I../../../boost
_1_43_0 -I../../../boost_1_43_0
17.LINK = g++
18.LFLAGS =
19.LIBS = $(SUBLIBS) -L/home/mpforwd/boost_1_43_0/stage/li
b -lboost_system -lboost_thread -lboost_date_time -lpthread
20.AR = ar cqs
21.RANLIB =
22.QMAKE = /usr/bin/qmake
23.TAR = tar -cf
PRESS = gzip -9f
25.COPY = cp -f
26.SED = sed
27.COPY_FILE = $(COPY)
28.COPY_DIR = $(COPY) -r
29.STRIP = strip
30.INSTALL_FILE = install -m 644 -p
31.INSTALL_DIR = $(COPY_DIR)
32.INSTALL_PROGRAM = install -m 755 -p
33.DEL_FILE = rm -f
34.SYMLINK = ln -f -s
35.DEL_DIR = rmdir
36.MOVE = mv -f
37.CHK_DIR_EXISTS= test -d
38.MKDIR = mkdir -p
39.
40.####### Output directory
41.
42.OBJECTS_DIR = debug/
43.
44.####### Files
45.
46.SOURCES = connection.cpp \
47. io_service_pool.cpp \
48. server.cpp \
49. main.cpp
50.OBJECTS = debug/connection.o \
51. debug/io_service_pool.o \
52. debug/server.o \
53. debug/main.o
54.DIST = /usr/share/qt4/mkspecs/common/g++.conf \
55. /usr/share/qt4/mkspecs/common/unix.conf \
56. /usr/share/qt4/mkspecs/common/linux.conf \
57. /usr/share/qt4/mkspecs/qconfig.pri \
58. /usr/share/qt4/mkspecs/features/qt_functions.prf \
59. /usr/share/qt4/mkspecs/features/qt_config.prf \
60. /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
61. /usr/share/qt4/mkspecs/features/default_pre.prf \
62. /usr/share/qt4/mkspecs/features/debug.prf \
63. /usr/share/qt4/mkspecs/features/default_post.prf \
64. /usr/share/qt4/mkspecs/features/warn_on.prf \
65. /usr/share/qt4/mkspecs/features/resources.prf \
66. /usr/share/qt4/mkspecs/features/uic.prf \
67. /usr/share/qt4/mkspecs/features/yacc.prf \
68. /usr/share/qt4/mkspecs/features/lex.prf \
69. /usr/share/qt4/mkspecs/features/include_source_dir.prf \
70. TcpServer.pro
71.QMAKE_TARGET = TcpServer.bin
72.DESTDIR =
73.TARGET = TcpServer.bin
74.
75.first: all
76.####### Implicit rules
77.
78..SUFFIXES: .o .c .cpp .cc .cxx .C
79.
80..cpp.o:
81. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
82.
.o:
84. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
85.
86..cxx.o:
87. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
88.
89..C.o:
90. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
91.
92..c.o:
93. $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
94.
95.####### Build rules
96.
97.all: Makefile $(TARGET)
98.
99.$(TARGET): $(OBJECTS)
100. $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
101.
102.Makefile: TcpServer.pro /usr/share/qt4/mkspecs/linux-g++/qmake.c onf /usr/share/qt4/mkspecs/common/g++.conf \
103. /usr/share/qt4/mkspecs/common/unix.conf \
104. /usr/share/qt4/mkspecs/common/linux.conf \
105. /usr/share/qt4/mkspecs/qconfig.pri \
106. /usr/share/qt4/mkspecs/features/qt_functions.prf \
107. /usr/share/qt4/mkspecs/features/qt_config.prf \
108. /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
109. /usr/share/qt4/mkspecs/features/default_pre.prf \
110. /usr/share/qt4/mkspecs/features/debug.prf \
111. /usr/share/qt4/mkspecs/features/default_post.prf \
112. /usr/share/qt4/mkspecs/features/warn_on.prf \
113. /usr/share/qt4/mkspecs/features/resources.prf \
114. /usr/share/qt4/mkspecs/features/uic.prf \
115. /usr/share/qt4/mkspecs/features/yacc.prf \
116. /usr/share/qt4/mkspecs/features/lex.prf \
117. /usr/share/qt4/mkspecs/features/include_source_dir.prf
118. $(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix -o Makef ile TcpServer.pro
119./usr/share/qt4/mkspecs/common/g++.conf:
120./usr/share/qt4/mkspecs/common/unix.conf:
121./usr/share/qt4/mkspecs/common/linux.conf:
122./usr/share/qt4/mkspecs/qconfig.pri:
123./usr/share/qt4/mkspecs/features/qt_functions.prf:
124./usr/share/qt4/mkspecs/features/qt_config.prf:
125./usr/share/qt4/mkspecs/features/exclusive_builds.prf:
126./usr/share/qt4/mkspecs/features/default_pre.prf:
127./usr/share/qt4/mkspecs/features/debug.prf:
128./usr/share/qt4/mkspecs/features/default_post.prf:
129./usr/share/qt4/mkspecs/features/warn_on.prf:
130./usr/share/qt4/mkspecs/features/resources.prf:
131./usr/share/qt4/mkspecs/features/uic.prf:
132./usr/share/qt4/mkspecs/features/yacc.prf:
133./usr/share/qt4/mkspecs/features/lex.prf:
134./usr/share/qt4/mkspecs/features/include_source_dir.prf:
135.qmake: FORCE
136. @$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix -o Mak efile TcpServer.pro
137.
138.dist:
139. @$(CHK_DIR_EXISTS) debug/TcpServer.bin1.0.0 || $(MKDIR) deb ug/TcpServer.bin1.0.0
140. $(COPY_FILE) --parents $(SOURCES) $(DIST) debug/TcpServer.bi n1.0.0/ && (cd `dirname debug/TcpServer.bin1.0.0` && $(TAR) TcpSer ver.bin1.0.0.tar TcpServer.bin1.0.0 && $(COMPRESS) TcpServer.bin1.0.
0.tar) && $(MOVE) `dirname debug/TcpServer.bin1.0.0`/TcpServer.bin
1.0.0.tar.gz . && $(DEL_FILE) -r debug/TcpServer.bin1.0.0
141.
142.
143.clean:compiler_clean
144. -$(DEL_FILE) $(OBJECTS)
145. -$(DEL_FILE) *~ core *.core
146.
147.
148.####### Sub-libraries
149.
150.distclean: clean
151. -$(DEL_FILE) $(TARGET)
152. -$(DEL_FILE) Makefile
153.
154.
piler_rcc_make_all:
piler_rcc_clean:
piler_uic_make_all:
piler_uic_clean:
piler_image_collection_make_all: qmake_image_collection.cpp piler_image_collection_clean:
161. -$(DEL_FILE) qmake_image_collection.cpp
piler_yacc_decl_make_all:
piler_yacc_decl_clean:
piler_yacc_impl_make_all:
piler_yacc_impl_clean:
piler_lex_make_all:
piler_lex_clean:
piler_clean:
169.
170.####### Compile
171.
172.debug/connection.o: connection.cpp connection.hpp
173. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/connection.o conne ction.cpp
174.
175.debug/io_service_pool.o: io_service_pool.cpp server.hpp \
176. connection.hpp \
177. io_service_pool.hpp
178. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/io_service_pool.o io _service_pool.cpp
179.
180.debug/server.o: server.cpp server.hpp \
181. connection.hpp \
182. io_service_pool.hpp
183. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/server.o server.cpp
184.
185.debug/main.o: main.cpp server.hpp \
186. connection.hpp \
187. io_service_pool.hpp
188. $(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug/main.o main.cpp 189.
190.####### Install
191.
192.install: FORCE
193.
194.uninstall: FORCE
195.
196.FORCE:。