summaryrefslogtreecommitdiff
path: root/Tests/RunCMake/Ninja
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-08-05 15:55:32 -0400
committerBrad King <brad.king@kitware.com>2016-08-09 15:15:24 -0400
commit0278989405eea53ca7e5f1bfa6af9aea7a0b49c5 (patch)
treeb51f07947692aa3d95eef9299ee588061be83afc /Tests/RunCMake/Ninja
parenta88c99f1bc301276a1780fec683d5061ca13f66f (diff)
downloadcmake-0278989405eea53ca7e5f1bfa6af9aea7a0b49c5.tar.gz
Ninja: Add `$subdir/{test,install,package}` targets
With the Makefile generator one can use `cd $subdir; make install` to build and install targets associated with a given subdirectory. This is not possible to do with the Ninja generator since there is only one `build.ninja` file at the top of the build tree. However, we can approximate it by allowing one to run `ninja $subdir/install` at the top of the tree to build the targets in the corresponding subdirectory and install them. This also makes sense for `test`, `package`, and other GLOBAL_TARGET targets. It was already done for `all` by commit v3.6.0-rc1~240^2~2 (Ninja: Add `$subdir/all` targets, 2016-03-11).
Diffstat (limited to 'Tests/RunCMake/Ninja')
-rw-r--r--Tests/RunCMake/Ninja/RunCMakeTest.cmake6
-rw-r--r--Tests/RunCMake/Ninja/SubDir-install-stdout.txt1
-rw-r--r--Tests/RunCMake/Ninja/SubDir-test-stdout.txt1
-rw-r--r--Tests/RunCMake/Ninja/SubDir.cmake5
-rw-r--r--Tests/RunCMake/Ninja/SubDir/CMakeLists.txt4
5 files changed, 17 insertions, 0 deletions
diff --git a/Tests/RunCMake/Ninja/RunCMakeTest.cmake b/Tests/RunCMake/Ninja/RunCMakeTest.cmake
index c73f852ae9..622c327602 100644
--- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake
@@ -41,10 +41,16 @@ function(run_SubDir)
run_cmake(SubDir)
if(WIN32)
set(SubDir_all [[SubDir\all]])
+ set(SubDir_test [[SubDir\test]])
+ set(SubDir_install [[SubDir\install]])
else()
set(SubDir_all [[SubDir/all]])
+ set(SubDir_test [[SubDir/test]])
+ set(SubDir_install [[SubDir/install]])
endif()
run_cmake_command(SubDir-build ${CMAKE_COMMAND} --build . --target ${SubDir_all})
+ run_cmake_command(SubDir-test ${CMAKE_COMMAND} --build . --target ${SubDir_test})
+ run_cmake_command(SubDir-install ${CMAKE_COMMAND} --build . --target ${SubDir_install})
endfunction()
run_SubDir()
diff --git a/Tests/RunCMake/Ninja/SubDir-install-stdout.txt b/Tests/RunCMake/Ninja/SubDir-install-stdout.txt
new file mode 100644
index 0000000000..4261b0e916
--- /dev/null
+++ b/Tests/RunCMake/Ninja/SubDir-install-stdout.txt
@@ -0,0 +1 @@
+-- Installing SubDir
diff --git a/Tests/RunCMake/Ninja/SubDir-test-stdout.txt b/Tests/RunCMake/Ninja/SubDir-test-stdout.txt
new file mode 100644
index 0000000000..9c493ac674
--- /dev/null
+++ b/Tests/RunCMake/Ninja/SubDir-test-stdout.txt
@@ -0,0 +1 @@
+1/1 Test #1: SubDirTest
diff --git a/Tests/RunCMake/Ninja/SubDir.cmake b/Tests/RunCMake/Ninja/SubDir.cmake
index 7224ec3442..d227753b27 100644
--- a/Tests/RunCMake/Ninja/SubDir.cmake
+++ b/Tests/RunCMake/Ninja/SubDir.cmake
@@ -1,2 +1,7 @@
+include(CTest)
add_subdirectory(SubDir)
add_custom_target(TopFail ALL COMMAND does_not_exist)
+add_test(NAME TopTest COMMAND ${CMAKE_COMMAND} -E echo "Running TopTest")
+install(CODE [[
+ message(FATAL_ERROR "Installing Top")
+]])
diff --git a/Tests/RunCMake/Ninja/SubDir/CMakeLists.txt b/Tests/RunCMake/Ninja/SubDir/CMakeLists.txt
index 73ae4317f6..456c1dba2b 100644
--- a/Tests/RunCMake/Ninja/SubDir/CMakeLists.txt
+++ b/Tests/RunCMake/Ninja/SubDir/CMakeLists.txt
@@ -1,2 +1,6 @@
add_custom_target(SubFail COMMAND does_not_exist)
add_custom_target(InAll ALL COMMAND ${CMAKE_COMMAND} -E echo "Building InAll")
+add_test(NAME SubDirTest COMMAND ${CMAKE_COMMAND} -E echo "Running SubDirTest")
+install(CODE [[
+ message(STATUS "Installing SubDir")
+]])