Я конвертирую старый проект OCX в QMake (поскольку он получает «новый» стандарт в моей компании). В моем файле Button.pro я добавляю компилятор MIDL с помощью
idl_c.output = $${DESTDIR}/${QMAKE_FILE_BASE}.tlb
idl_c.input = IDL
idl_c.commands = $${QMAKE_IDL} ${QMAKE_FILE_IN} $${IDLFLAGS} \
/tlb ${QMAKE_FILE_OUT}
idl_c.variable_out = GENERATED_FILES
idl_c.CONFIG += target_predeps
idl_c.name = MIDL
QMAKE_EXTRA_COMPILERS += idl_c
IDL += $$PWD/Button.odl
В файле .pro также упоминается, что у меня есть файл RC
RC_FILE += $$PWD/Button.rc
Этот файл RC содержит TYPELIB для этого файла tlb, что означает, что он должен быть доступен до запуска rc.exe
1 TYPELIB "Button.tlb"
Затем я создаю make-файл с помощью QMake и создаю свой проект с помощью nmake. Все работает нормально: консоль не показывает ошибок, а выходной OCX генерируется (и работает). Я ясно вижу, что сначала выполняется MIDL, потом RC, потом все остальное. Если я попытаюсь построить с помощью jom, заказ больше не будет выполнен. jom, кажется, пытается выполнить MIDL и RC параллельно: тогда Button.tlb еще не существует в то время, когда он нужен RC.exe, и сборка завершается ошибкой.
Есть ли способ заставить jom ждать выполнения midl перед запуском rc?
Я использую QT 5.3.1 под MSVC2013.