浏览代码

ENH: Help cmake-gui docs generation on Windows

We use a custom command to run 'cmake-gui --help...' to generate the
documentation for the application.  Since this is a Qt application, the
executable must find the Qt DLLs in order to run.  As a convenience, if
QtCore4.dll appears next to qmake.exe, we put its location in the PATH
environment variable when running the custom command on Windows.
Brad King 16 年之前
父节点
当前提交
0d2f241e1a
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      Utilities/CMakeLists.txt

+ 11 - 0
Utilities/CMakeLists.txt

@@ -12,6 +12,7 @@ MACRO(ADD_DOCS target dependency)
   IF(CMD)
     ADD_CUSTOM_COMMAND(
       OUTPUT ${CMake_BINARY_DIR}/Docs/${target}.txt
+      ${${target}-PATH} # Possibly set PATH, see below.
       COMMAND ${CMD}
       ARGS --help-full ${CMake_BINARY_DIR}/Docs/${target}.txt
            --help-full ${CMake_BINARY_DIR}/Docs/${target}.html
@@ -30,6 +31,16 @@ MACRO(ADD_DOCS target dependency)
   ENDIF(CMD)
 ENDMACRO(ADD_DOCS target dependency)
 
+# Help cmake-gui find the Qt DLLs on Windows.
+IF(BUILD_QtDialog AND WIN32 AND EXISTS "${QT_QMAKE_EXECUTABLE}")
+  GET_FILENAME_COMPONENT(Qt_BIN_DIR "${QT_QMAKE_EXECUTABLE}" PATH)
+  IF(EXISTS "${Qt_BIN_DIR}/QtCore4.dll")
+    # Tell the macro to set the path before running cmake-gui.
+    STRING(REPLACE ";" "\\;" _PATH "PATH=${Qt_BIN_DIR};%PATH%")
+    SET(cmake-gui-PATH COMMAND set "${_PATH}")
+  ENDIF(EXISTS "${Qt_BIN_DIR}/QtCore4.dll")
+ENDIF(BUILD_QtDialog AND WIN32 AND EXISTS "${QT_QMAKE_EXECUTABLE}")
+
 # add the docs for the executables
 ADD_DOCS(ctest      ${CMake_SOURCE_DIR}/Utilities/Doxygen/authors.txt)
 ADD_DOCS(cpack      ${CMake_SOURCE_DIR}/Utilities/Doxygen/authors.txt)