A patch against FindQt4.cmake from CMake 2.6.4 to fix macro QT4_MAKE_OUTPUT_FILE in different drives on Windows

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

A patch against FindQt4.cmake from CMake 2.6.4 to fix macro QT4_MAKE_OUTPUT_FILE in different drives on Windows

Guilherme Balena Versiani
Dear CMake maintainers,


I use Qt on Windows and discovered a BUG in FindQt4.cmake from CMake
2.6.4, when you use the macro QT4_WRAP_CPP for an input file coming from
another drive different from the current build drive. The problem occurs
from the fact that QT4_MAKE_OUTPUT_FILE macro was supporting to generate
"output" files only for paths in the same Windows drive.

The problem is seen in the following error message:

CMake Error at C:/Program
Files/cmake/share/cmake-2.6/Modules/FindQt4.cmake:967 (FILE):
  file problem creating directory:
  D:/<source_path>/C:/Qt/4.5.0/qtsingleapplication/src
Call Stack (most recent call first):
  C:/Program Files/cmake/share/cmake-2.6/Modules/FindQt4.cmake:1041
(QT4_MAKE_OUTPUT_FILE)
  D:/<source_path>/CMakeLists.txt:XXX (QT4_WRAP_CPP)


The patch below can be applied against CMake 2.6.4 to the file
share/cmake-2.6/Modules/FindQt4.cmake:


--- FindQt4.cmake.orig  Thu Jul 16 21:23:20 2009
+++ FindQt4.cmake       Thu Jul 16 21:23:03 2009
@@ -960,6 +960,9 @@
     ELSE(_infileLength GREATER _binlength)
       FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile})
     ENDIF(_infileLength GREATER _binlength)
+    IF(WIN32 AND rel MATCHES "^[a-zA-Z]:") # absolute path
+      STRING(REGEX REPLACE "^([a-zA-Z]):(.*)$" "\\1_\\2" rel "${rel}")
+    ENDIF(WIN32 AND rel MATCHES "^[a-zA-Z]:")
     SET(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}")
     STRING(REPLACE ".." "__" _outfile ${_outfile})
     GET_FILENAME_COMPONENT(outpath ${_outfile} PATH)



Best regards,

Guilherme Balena Versiani.
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake
Loading...