3 qtPrepareTool(QMAKE_MOC, moc)
4 isEmpty(MOC_DIR):MOC_DIR = .
5 isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
6 isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
8 # On Windows, put the includes into a .inc file which moc will read, if the project
9 # has too many includes. We do this to overcome a command-line limit on Win < XP
12 win32:count($$list($$INCLUDEPATH), 40, >) {
13 INCLUDETEMP = $$MOC_DIR/mocinclude.tmp
15 WIN_INCLUDETEMP=$$INCLUDETEMP
17 EOC = $$escape_expand(\\n\\t)
19 contains(TEMPLATE, "vc.*") {
20 # the VCPROJ generator will replace the \r\h with the coded \r\n: 

21 EOC = $$escape_expand(\\r\\h)
26 for(incfile, $$list($$INCLUDEPATH)) {
27 INCFILELIST = -I$$incfile
28 isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
29 else: RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
31 !isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
33 build_pass|isEmpty(BUILDS) {
34 mocinclude.target = $$INCLUDETEMP
35 mocinclude.commands = $$RET
36 QMAKE_EXTRA_TARGETS += mocinclude
40 defineReplace(mocCmdBase) {
41 !isEmpty(WIN_INCLUDETEMP) {
43 contains(TEMPLATE, "vc.*") {
44 RET += $$mocinclude.commands
46 RET += $$QMAKE_MOC $(DEFINES) @$$WIN_INCLUDETEMP $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$QMAKE_MOC_OPTIONS
49 return($$QMAKE_MOC $(DEFINES) $(INCPATH) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$QMAKE_MOC_OPTIONS)
53 moc_header.CONFIG = moc_verify
54 moc_header.dependency_type = TYPE_C
55 moc_header.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
56 moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_CPP)}
57 moc_header.input = HEADERS
58 moc_header.variable_out = SOURCES
59 moc_header.name = MOC ${QMAKE_FILE_IN}
60 !contains(TEMPLATE, "vc.*") {
61 !isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP
63 silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
64 QMAKE_EXTRA_COMPILERS += moc_header
65 INCREDIBUILD_XGE += moc_header
68 moc_source.CONFIG = no_link moc_verify
69 moc_source.dependency_type = TYPE_C
70 moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
71 moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
72 moc_source.input = SOURCES OBJECTIVE_SOURCES
73 moc_source.name = MOC ${QMAKE_FILE_IN}
74 !contains(TEMPLATE, "vc.*") {
75 !isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP
77 silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
78 QMAKE_EXTRA_COMPILERS += moc_source
79 INCREDIBUILD_XGE += moc_source
81 #make sure we can include these files
82 moc_dir_short = $$MOC_DIR
83 contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/,
84 contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
85 else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
89 moc_source.depends += $$first(QMAKE_MOC)
90 moc_header.depends += $$first(QMAKE_MOC)
94 build_pass|isEmpty(BUILDS):mocclean.depends = compiler_moc_header_clean compiler_moc_source_clean
95 else:mocclean.CONFIG += recursive
96 QMAKE_EXTRA_TARGETS += mocclean
99 build_pass|isEmpty(BUILDS):mocables.depends = compiler_moc_header_make_all compiler_moc_source_make_all
100 else:mocables.CONFIG += recursive
101 QMAKE_EXTRA_TARGETS += mocables