From 8eb1f9f605a71dbeb955d2deed92109155e56f02 Mon Sep 17 00:00:00 2001
From: Rashad Kanavath <rashad.kanavath.email.com>
Date: Thu, 3 May 2018 17:05:50 +0200
Subject: [PATCH] BUG: post_build on windows appends all commands

---
 Modules/Wrappers/QGIS/src/CMakeLists.txt | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/Modules/Wrappers/QGIS/src/CMakeLists.txt b/Modules/Wrappers/QGIS/src/CMakeLists.txt
index 76d2741648..4dc0dbab22 100644
--- a/Modules/Wrappers/QGIS/src/CMakeLists.txt
+++ b/Modules/Wrappers/QGIS/src/CMakeLists.txt
@@ -20,26 +20,33 @@
 add_executable(otbQgisDescriptor otbQgisDescriptor.cxx)
 target_link_libraries(otbQgisDescriptor ${OTBQgis_LIBRARIES})
 otb_module_target(otbQgisDescriptor)
+
+add_custom_command(TARGET otbQgisDescriptor PRE_BUILD
+  COMMAND "${CMAKE_COMMAND}" "-E" "echo" "Cleaning ${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
+  COMMAND "${CMAKE_COMMAND}" "-E" "remove_directory" "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
+  COMMAND "${CMAKE_COMMAND}" "-E" "make_directory"   "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
+  )
+
 set(app_names ${OTB_APPLICATIONS_NAME_LIST})
 list(REMOVE_ITEM app_names "TestApplication")
 list(REMOVE_ITEM app_names "ApplicationExample")
 list(REMOVE_DUPLICATES app_names)
-
+set(dfiles)
 foreach(app_name ${app_names})
   add_dependencies(otbQgisDescriptor otbapp_${app_name})
-  add_custom_command(TARGET otbQgisDescriptor POST_BUILD
+  set(dfile "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/${app_name}.txt")
+  add_custom_command(OUTPUT "${dfile}"
     COMMAND "$<TARGET_FILE:otbQgisDescriptor>"
-    "${app_name}" "${OTB_BINARY_DIR}/${OTB_INSTALL_APP_DIR}" "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
+     "${app_name}" "${OTB_BINARY_DIR}/${OTB_INSTALL_APP_DIR}" "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
     WORKING_DIRECTORY ${OTB_BINARY_DIR}
     COMMENT "./bin/otbQgisDescriptor ${app_name} ./${OTB_INSTALL_APP_DIR} ./${OTB_INSTALL_DESCR_DIR}/"
     VERBATIM)
+  list(APPEND dfiles "${dfile}")
 endforeach()
 
-add_custom_command(TARGET otbQgisDescriptor PRE_BUILD
-  COMMAND "${CMAKE_COMMAND}" "-E" "echo" "Cleaning ${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
-  COMMAND "${CMAKE_COMMAND}" "-E" "remove_directory" "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
-  COMMAND "${CMAKE_COMMAND}" "-E" "make_directory"   "${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}/"
-  )
+add_custom_target(generate_descriptors DEPENDS ${dfiles} )
+add_dependencies(${otb-module}-all generate_descriptors)
+
 install(DIRECTORY ${OTB_BINARY_DIR}/${OTB_INSTALL_DESCR_DIR}
   DESTINATION share/otb)
 
-- 
GitLab