Tests: Add case for IMPLICIT_DEPENDS in custom target

Use the `IMPLICIT_DEPENDS` option of `add_custom_command` and place the
command in a custom target.  Verify that `INCLUDE_DIRECTORIES` of that
custom target are honored.  This is a case that was not really designed
to work but happens to work, is useful, and makes sense.  Add a test
case make sure it continues to work.

Issue: #16830
This commit is contained in:
Brad King
2017-04-26 08:35:11 -04:00
parent 6d1be6e382
commit 434f5cef65
5 changed files with 26 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
add_custom_command(
OUTPUT output.cxx
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx output.cxx
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx
IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/MakeCustomIncludes.cxx)
add_custom_target(generate ALL DEPENDS output.cxx)
set_property(TARGET generate PROPERTY INCLUDE_DIRECTORIES ${CMAKE_CURRENT_BINARY_DIR})
file(GENERATE OUTPUT check-$<LOWER_CASE:$<CONFIG>>.cmake CONTENT "
set(check_pairs
\"${CMAKE_CURRENT_BINARY_DIR}/output.cxx|${CMAKE_CURRENT_BINARY_DIR}/MakeCustomIncludes.h\"
)
")

View File

@@ -0,0 +1,6 @@
#include "MakeCustomIncludes.h"
int main()
{
return MakeCustomIncludes();
}

View File

@@ -0,0 +1,3 @@
file(WRITE "${RunCMake_TEST_BINARY_DIR}/MakeCustomIncludes.h" [[
inline int MakeCustomIncludes() { return 1; }
]])

View File

@@ -0,0 +1,3 @@
file(WRITE "${RunCMake_TEST_BINARY_DIR}/MakeCustomIncludes.h" [[
inline int MakeCustomIncludes() { return 2; }
]])

View File

@@ -44,6 +44,7 @@ run_BuildDepends(Custom-Symbolic-and-Byproduct)
run_BuildDepends(Custom-Always)
if(RunCMake_GENERATOR MATCHES "Make")
run_BuildDepends(MakeCustomIncludes)
if(NOT "${RunCMake_BINARY_DIR}" STREQUAL "${RunCMake_SOURCE_DIR}")
run_BuildDepends(MakeInProjectOnly)
endif()