X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=adm_local%2Fcmake_files%2FUseQtExt.cmake;h=db787c6acde8dc875bd4db026bee5a4e6ea2a0b7;hb=d51e3c95a93b840a0784404af8e4e9086a386b9c;hp=95985b7b794f8d1de948984bbe6347c1742c63a5;hpb=523d074f45ba40fcf59d97e0cb813876659590c1;p=modules%2Fgui.git diff --git a/adm_local/cmake_files/UseQtExt.cmake b/adm_local/cmake_files/UseQtExt.cmake index 95985b7b7..db787c6ac 100644 --- a/adm_local/cmake_files/UseQtExt.cmake +++ b/adm_local/cmake_files/UseQtExt.cmake @@ -47,7 +47,47 @@ MACRO(QT_WRAP_MOC) IF (QT_VERSION VERSION_LESS "5.0") QT4_WRAP_CPP(${ARGN}) ELSE() - QT5_WRAP_CPP(${ARGN}) + QT5_WRAP_CPP(${ARGN}) + # Workaround to avoid problem with bug in moc preprocessor: + # The problem is reproduced on Linux in case if native system Qt is installed + # and "-I/usr/include" parameter is presented in the moc command line before + # custom Qt includes. This bug takes place in Qt-5.6.0 and newer. To avoid this + # bug move "-I/usr/include" parameter in the "moc parameters" file to the end + # of the "include section". + IF (NOT WIN32) + FOREACH(IT ${ARGN}) + GET_FILENAME_COMPONENT(IT ${IT} ABSOLUTE) + GET_FILENAME_COMPONENT(PFILE ${IT} NAME_WE) + SET(OUTFILE ${CMAKE_CURRENT_BINARY_DIR}/moc_${PFILE}.cpp_parameters) + IF(EXISTS ${OUTFILE}) + SET(NEW_CONTENT) + SET(IS_INCLUDE_SECTION TRUE) + SET(HAS_SYSTEM_INC FALSE) + FILE(READ ${OUTFILE} CONTENT) + STRING(REGEX REPLACE "\n" ";" CONTENT "${CONTENT}") + list(REMOVE_DUPLICATES CONTENT) + FOREACH(S ${CONTENT}) + IF("${S}" MATCHES "^-I") + IF("${S}" STREQUAL "-I/usr/include") + SET(HAS_SYSTEM_INC TRUE) + ELSE() + SET(NEW_CONTENT ${NEW_CONTENT} "${S}\n") + ENDIF() + ELSE() + SET(IS_INCLUDE_SECTION FALSE) + ENDIF() + IF(NOT IS_INCLUDE_SECTION) + IF(HAS_SYSTEM_INC) + SET(NEW_CONTENT ${NEW_CONTENT} "-I/usr/include\n") + SET(HAS_SYSTEM_INC FALSE) + ENDIF() + SET(NEW_CONTENT ${NEW_CONTENT} "${S}\n") + ENDIF() + ENDFOREACH() + FILE(WRITE ${OUTFILE} ${NEW_CONTENT}) + ENDIF() + ENDFOREACH() + ENDIF() ENDIF() ENDMACRO(QT_WRAP_MOC)