فهرست منبع

ENH: Fix #7433. Put list of files in a .pro file and call lupdate on it,
instead of putting the list of files on the command line.

Clinton Stimpson 17 سال پیش
والد
کامیت
33e87980cb
1فایلهای تغییر یافته به همراه17 افزوده شده و 3 حذف شده
  1. 17 3
      Modules/FindQt4.cmake

+ 17 - 3
Modules/FindQt4.cmake

@@ -1295,21 +1295,35 @@ IF (QT4_QMAKE_FOUND)
    MACRO(QT4_CREATE_TRANSLATION _qm_files)
       QT4_EXTRACT_OPTIONS(_lupdate_files _lupdate_options ${ARGN})
       SET(_my_sources)
+      SET(_my_dirs)
       SET(_my_tsfiles)
+      SET(_ts_pro)
       FOREACH (_file ${_lupdate_files})
          GET_FILENAME_COMPONENT(_ext ${_file} EXT)
          GET_FILENAME_COMPONENT(_abs_FILE ${_file} ABSOLUTE)
          IF(_ext MATCHES "ts")
            LIST(APPEND _my_tsfiles ${_abs_FILE})
          ELSE(_ext MATCHES "ts")
-           LIST(APPEND _my_sources ${_abs_FILE})
+           IF(NOT _ext)
+             LIST(APPEND _my_dirs ${_abs_FILE})
+           ELSE(NOT _ext)
+             LIST(APPEND _my_sources ${_abs_FILE})
+           ENDIF(NOT _ext)
          ENDIF(_ext MATCHES "ts")
       ENDFOREACH(_file)
       FOREACH(_ts_file ${_my_tsfiles})
+        IF(_my_sources)
+          # make a .pro file to call lupdate on, so we don't make our commands too
+          # long for some systems
+          GET_FILENAME_COMPONENT(_ts_name ${_ts_file} NAME_WE)
+          SET(_ts_pro ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lupdate.pro)
+          STRING(REPLACE ";" " " _pro_srcs "${_my_sources}")
+          FILE(WRITE ${_ts_pro} "SOURCES = ${_pro_srcs}")
+        ENDIF(_my_sources)
         ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file}
            COMMAND ${QT_LUPDATE_EXECUTABLE}
-           ARGS ${_lupdate_options} ${_my_sources} -ts ${_ts_file}
-           DEPENDS ${_my_sources})
+           ARGS ${_lupdate_options} ${_ts_pro} ${_my_dirs} -ts ${_ts_file}
+           DEPENDS ${_my_sources} ${_ts_pro})
       ENDFOREACH(_ts_file)
       QT4_ADD_TRANSLATION(${_qm_files} ${_my_tsfiles})
    ENDMACRO(QT4_CREATE_TRANSLATION)