I've managed to solve the problem by overriding uic.
The key point is disabling the uic by adding "CONFIG -= uic" then using a custom compiler. I'm posting both full configuration file and another that uses it.
pri file.
# Public domain.
# Turns off warnings about strict aliasing
QMAKE_CXXFLAGS += -Wstrict-aliasing=0 -Wno-unused-parameter
CONFIG += no_include_pwd silent
CONFIG -= uic
# ----------------------------------------------------------------------------
# Header copier
header_copy.input = HEADERS
header_copy.CONFIG += no_link target_predeps
header_copy.variable_out = GENERATED_FILES
# ----------------------------------------------------------------------------
# UI compiler
tbsuic.input = FORMS
tbsuic.variable_out = GENERATED_FILES
tbsuic.CONFIG += no_link target_predeps
# ----------------------------------------------------------------------------
defineTest(configuration) {
target_name = $$1
target_type = $$2
output_directory = $$3
TARGET = $$target_name
INCLUDEPATH = $$output_directory/include
LIBS += -L$$output_directory/lib
UI_DIR = $$output_directory/obj/ui
UI_HEADERS_DIR = $$output_directory/include/tbs
QMAKE_EXTRA_COMPILERS += tbsuic header_copy
# Relative part of header _compiler_
header_copy.output = $$output_directory/include/tbs/${QMAKE_FILE_BASE}.h
header_copy.commands = @$$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT}
# Relative part of ui compiler
tbsuic.output = $$output_directory/include/tbs/ui_${QMAKE_FILE_BASE}.h
tbsuic.commands = @$$QMAKE_UIC ${QMAKE_FILE_NAME} -o $$output_directory/include/tbs/ui_${QMAKE_FILE_BASE}.h
contains(target_type, lib) {
TEMPLATE = lib
CONFIG += staticlib
DESTDIR = $$output_directory/lib
}
else:contains(target_type, exe) {
DESTDIR = $$output_directory/bin
TEMPLATE = app
debug {
CONFIG += console
}
}
export(TARGET)
export(TEMPLATE)
export(CONFIG)
export(DESTDIR)
export(UI_DIR)
export(UI_HEADERS_DIR)
export(INCLUDEPATH)
export(LIBS)
export(HEADERS)
export(header_copy.output)
export(header_copy.commands)
export(tbsuic.output)
export(tbsuic.commands)
export(QMAKE_EXTRA_COMPILERS)
}
# Public domain.
# Turns off warnings about strict aliasing
QMAKE_CXXFLAGS += -Wstrict-aliasing=0 -Wno-unused-parameter
CONFIG += no_include_pwd silent
CONFIG -= uic
# ----------------------------------------------------------------------------
# Header copier
header_copy.input = HEADERS
header_copy.CONFIG += no_link target_predeps
header_copy.variable_out = GENERATED_FILES
# ----------------------------------------------------------------------------
# UI compiler
tbsuic.input = FORMS
tbsuic.variable_out = GENERATED_FILES
tbsuic.CONFIG += no_link target_predeps
# ----------------------------------------------------------------------------
defineTest(configuration) {
target_name = $$1
target_type = $$2
output_directory = $$3
TARGET = $$target_name
INCLUDEPATH = $$output_directory/include
LIBS += -L$$output_directory/lib
UI_DIR = $$output_directory/obj/ui
UI_HEADERS_DIR = $$output_directory/include/tbs
QMAKE_EXTRA_COMPILERS += tbsuic header_copy
# Relative part of header _compiler_
header_copy.output = $$output_directory/include/tbs/${QMAKE_FILE_BASE}.h
header_copy.commands = @$$QMAKE_COPY ${QMAKE_FILE_NAME} ${QMAKE_FILE_OUT}
# Relative part of ui compiler
tbsuic.output = $$output_directory/include/tbs/ui_${QMAKE_FILE_BASE}.h
tbsuic.commands = @$$QMAKE_UIC ${QMAKE_FILE_NAME} -o $$output_directory/include/tbs/ui_${QMAKE_FILE_BASE}.h
contains(target_type, lib) {
TEMPLATE = lib
CONFIG += staticlib
DESTDIR = $$output_directory/lib
}
else:contains(target_type, exe) {
DESTDIR = $$output_directory/bin
TEMPLATE = app
debug {
CONFIG += console
}
}
export(TARGET)
export(TEMPLATE)
export(CONFIG)
export(DESTDIR)
export(UI_DIR)
export(UI_HEADERS_DIR)
export(INCLUDEPATH)
export(LIBS)
export(HEADERS)
export(header_copy.output)
export(header_copy.commands)
export(tbsuic.output)
export(tbsuic.commands)
export(QMAKE_EXTRA_COMPILERS)
}
To copy to clipboard, switch view to plain text mode
Pro file that uses configuration file
include (../tbs_desktop.pri) #Inclusion
#First parameter is target's name, second is it's type, and third is source root relative
#to project
configuration(tbs_forms, lib, ..)
SOURCES += \
point_list_model.cpp \
tabular_data_editor.cpp \
route_editor.cpp \
.....
HEADERS += \
vertex.h \
tabular_data_editor.h \
route_editor.h \
point_list_model.h \
...
FORMS += \
route_editor.ui \
line_property_editor.ui \
.....
include (../tbs_desktop.pri) #Inclusion
#First parameter is target's name, second is it's type, and third is source root relative
#to project
configuration(tbs_forms, lib, ..)
SOURCES += \
point_list_model.cpp \
tabular_data_editor.cpp \
route_editor.cpp \
.....
HEADERS += \
vertex.h \
tabular_data_editor.h \
route_editor.h \
point_list_model.h \
...
FORMS += \
route_editor.ui \
line_property_editor.ui \
.....
To copy to clipboard, switch view to plain text mode
"CONFIG -= uic" is suggested at irc.freenode.net#qt by someone which his/her nick name is
eluding my memory at the moment.
Bookmarks