summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake
diff options
context:
space:
mode:
authorJean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>2018-08-09 03:40:00 (GMT)
committerJean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>2018-08-09 17:32:23 (GMT)
commit180c2f8de8b1cc19e7dafeaf571d8fa2b203d78f (patch)
treece0ecef81d78479d4ec17b04d6731ebc3390880d /Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake
parent708dcbfdf587a2a84c4fdfc64f80d358e6efffb0 (diff)
downloadCMake-180c2f8de8b1cc19e7dafeaf571d8fa2b203d78f.zip
CMake-180c2f8de8b1cc19e7dafeaf571d8fa2b203d78f.tar.gz
CMake-180c2f8de8b1cc19e7dafeaf571d8fa2b203d78f.tar.bz2
Ninja: Fix dupbuild error skipping alias with conflicting custom command
See-also: https://issues.slicer.org/view.php?id=4595 Reported-by: Isaiah Norton <inorton@bwh.harvard.edu>
Diffstat (limited to 'Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake')
-rw-r--r--Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake41
1 files changed, 41 insertions, 0 deletions
diff --git a/Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake b/Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake
new file mode 100644
index 0000000..da6f86a
--- /dev/null
+++ b/Tests/RunCMake/Ninja/PreventTargetAliasesDupBuildRule.cmake
@@ -0,0 +1,41 @@
+cmake_minimum_required(VERSION 3.12)
+project(Test LANGUAGES C)
+
+# fake launcher executable
+set(input_launcher_executable ${CMAKE_CURRENT_BINARY_DIR}/fake_launcher_executable)
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/fake_launcher_executable "")
+
+# application and executable name
+set(application_target "HelloApp")
+set(application_name "Hello")
+set(executable_name "Hello")
+
+# target built in "<root>/bin"
+add_executable(${application_target} hello.c)
+set_target_properties(${application_target} PROPERTIES
+ OUTPUT_NAME ${executable_name}
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin
+ )
+
+# configured launcher in "<root>"
+set(configured_launcher_executable "${CMAKE_CURRENT_BINARY_DIR}/${application_name}")
+
+# create command to copy the launcher
+add_custom_command(
+ DEPENDS
+ ${input_launcher_executable}
+ OUTPUT
+ ${configured_launcher_executable}
+ COMMAND
+ ${CMAKE_COMMAND} -E copy ${input_launcher_executable} ${configured_launcher_executable}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT
+ "Configuring application launcher: ${application_name}"
+ )
+
+add_custom_target(Configure${application_name}Launcher ALL
+ DEPENDS
+ ${application_target}
+ ${input_launcher_executable}
+ ${configured_launcher_executable}
+ )