Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-62546

Reg: qmake generates incorrect makefiles when there is conditional compilation in source file

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Not Evaluated
    • None
    • 5.9.1
    • Build tools: qmake
    • None
    • Qt 5.9.1

    Description

      After updade from 5.6.0 to 5.9.1 I am unable to compile some of my projects.

      // HWRenderer.cpp
      #ifdef _DEBUG
      #include "YUVPlanarsDebug.h"
      #else
      #include "YUVPlanars.h"
      #endif
      
      ...
      
      // project.pro
      	...
      SOURCES += HWRenderer.cpp
      SHADERS = direct3d9/HWRenderer/Shaders/YUVPlanars.psh
      
      win32 {
      	CONFIG(debug, debug|release) { 
      		psa.output  = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}Debug.h
      		PSAFLAGS = /Zi
      		#HEADERS -= direct3d9/HWRenderer/Shaders/YUVPlanars.h
      		#HEADERS -= direct3d9\HWRenderer\Shaders\YUVPlanars.h
      	}
      	else {
      		psa.output  = ${QMAKE_FILE_PATH}/${QMAKE_FILE_BASE}.h
      		PSAFLAGS = 
      		#HEADERS -= direct3d9/HWRenderer/Shaders/YUVPlanarsDebug.h
      		#HEADERS -= direct3d9\HWRenderer\Shaders\YUVPlanarsDebug.h
      	}
      	psa.commands = \"$(LIB_HOME)/DirectX SDK/Utilities/Bin/x86/psa.exe\" $$PSAFLAGS /Vng_${QMAKE_FILE_BASE}PS /Fh${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
      	psa.name = Assembling ${QMAKE_FILE_BASE}${QMAKE_FILE_EXT} shader
      	psa.CONFIG = no_link
      	psa.input = SHADERS
      	QMAKE_EXTRA_COMPILERS += psa
      }
      

      After then I run qmake it generates incorrect Makefile.Debug:

      // Makefile.Debug
      ...
      ..\..\..\Temp\QtIssRenderer\debug64\HWRenderer.obj: direct3d9\HWRenderer\HWRenderer.cpp direct3d9/HWRenderer/HWRenderer.h \
      		direct3d9\HWRenderer\Shaders\YUVPlanarsDebug.h \
      		direct3d9\HWRenderer\Shaders\YUVPlanars.h \
      ...
      ...
      

      So during nmake the compilation failed as in debug only YUVPlanarsDebug.h is generated and nmake fail to find YUVPlanars.h.

      assembly succeeded; see direct3d9\HWRenderer\Shaders\YUVPlanarsDebug.h
      NMAKE : fatal error U1073: don't know how to make 'direct3d9\HWRenderer\Shaders\YUVPlanars.h'
      

      For now I am looking for a fast workaround like Q_MOC_RUN macro in source file or TR_EXCLUDE in pro-file.

      Attachments

        Issue Links

          Activity

            People

              buddenha Oswald Buddenhagen
              nikolaynnov Andrey
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: