Is this something that could be handled better by qbs?

Glen

> On Feb 14, 2017, at 3:59 PM, Glen Mabey <[email protected]> wrote:
> 
> 
> Well, I have the strangest of solutions that isn’t clean, pretty, or even 
> explainable (by me).
> 
> Consider these extra rules (linux only) so the complete .pro file looks like 
> this:
> 
> 
> TEMPLATE = app
> 
> SOURCES += main.cpp
> 
> OBJ_SOURCE = dummy_input_file.txt
> 
> OBJ_GENERATOR.CONFIG   += no_link target_predeps
> OBJ_GENERATOR.output   = ${QMAKE_FILE_BASE}_QObject.h
> OBJ_GENERATOR.commands = ./generate_a_file.py ${QMAKE_FILE_OUT}
> OBJ_GENERATOR.input = OBJ_SOURCE
> OBJ_GENERATOR.variable_out = HEADERS
> QMAKE_EXTRA_COMPILERS += OBJ_GENERATOR
> 
> PRO_FILE_TOUCHER.CONFIG   += no_link target_predeps
> PRO_FILE_TOUCHER.output   = .lmp_${QMAKE_FILE_BASE}_generated
> PRO_FILE_TOUCHER.commands = touch $$_PRO_FILE_ ${QMAKE_FILE_OUT} && $(MAKE) 
> && exit 1
> PRO_FILE_TOUCHER.input    = OBJ_SOURCE
> QMAKE_EXTRA_COMPILERS     += PRO_FILE_TOUCHER
> 
> OBJECTS_DIR=.o
> MOC_DIR=.moc
> 
> 
> That is, the first time that make runs, it touches the .pro file as well as 
> .lmp_dummy_input_file_generated, then re-runs make.
> 
> Here’s what I don’t understand: when those commands are followed by “exit 1” 
> then for some reason the “new” version of the Makefile gets used in the rest 
> of the build commands, whereas if “exit 0” is used, then in the Makefile, 
> OBJECTS does not contain .o/moc_dummy_input_file_QObject.o and linking fails …
> 
> So, this all seems extremely hackish, and make still returns with a non-zero 
> value (like it does when linking fails) but now in this case it actually has 
> succeeded … blech.
> 
> Glen
> 
>> On Feb 13, 2017, at 12:04 PM, Glen Mabey <[email protected]> wrote:
>> 
>> Hello,
>> 
>> I think I’ve got the exact problem described here back in 2012: 
>> https://forum.qt.io/topic/21964/qmake-custom-compilers-how-to-process-generated-header-files-with-moc
>> 
>> That is, my generated header file includes a class that inherits from 
>> QObject and needs to be moc'ed.
>> 
>> However, these lines are not sufficient to make that happen the first time 
>> the project is built:
>> 
>> OBJ_SOURCE = dummy_input_file.txt
>> 
>> OBJ_GENERATOR.CONFIG   += no_link target_predeps
>> OBJ_GENERATOR.output   = ${QMAKE_FILE_BASE}_QObject.h
>> OBJ_GENERATOR.commands = ./generate_a_file.py ${QMAKE_FILE_OUT}
>> OBJ_GENERATOR.input = OBJ_SOURCE
>> OBJ_GENERATOR.variable_out = HEADERS
>> QMAKE_EXTRA_COMPILERS += OBJ_GENERATOR
>> 
>> 
>> That is, the project fails to link due to undefined references.
>> 
>> If I rerun qmake and build again, though, everything works out fine.
>> 
>> Any suggestions?
>> Glen
>> _______________________________________________
>> Interest mailing list
>> [email protected]
>> http://lists.qt-project.org/mailman/listinfo/interest
> 
> _______________________________________________
> Interest mailing list
> [email protected]
> http://lists.qt-project.org/mailman/listinfo/interest

_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to