Allow target commands to be invoked with no items (#14325).

Code such as

 target_include_directories(foo PRIVATE ${items})

should not work or break based on whether items is defined or not.
This commit is contained in:
Stephen Kelly 2013-07-31 16:02:07 +02:00
parent 0cecc7b485
commit c0b8682200
4 changed files with 27 additions and 3 deletions

View File

@ -19,7 +19,7 @@ bool cmTargetPropCommandBase
::HandleArguments(std::vector<std::string> const& args, const char *prop,
ArgumentFlags flags)
{
if(args.size() < 3)
if(args.size() < 2)
{
this->SetError("called with incorrect number of arguments");
return false;
@ -53,7 +53,7 @@ bool cmTargetPropCommandBase
if ((flags & PROCESS_SYSTEM) && args[argIndex] == "SYSTEM")
{
if (args.size() < 4)
if (args.size() < 3)
{
this->SetError("called with incorrect number of arguments");
return false;
@ -65,7 +65,7 @@ bool cmTargetPropCommandBase
bool prepend = false;
if ((flags & PROCESS_BEFORE) && args[argIndex] == "BEFORE")
{
if (args.size() < 4)
if (args.size() < 3)
{
this->SetError("called with incorrect number of arguments");
return false;

View File

@ -20,3 +20,8 @@ target_compile_definitions(consumer
PRIVATE $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS>
-DDASH_D_DEFINE
)
# Test no items
target_compile_definitions(consumer
PRIVATE
)

View File

@ -33,3 +33,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
"DO_GNU_TESTS"
)
endif()
# Test no items
target_compile_options(consumer
PRIVATE
)

View File

@ -47,3 +47,17 @@ target_include_directories(consumer
$<TARGET_PROPERTY:target_include_directories,INTERFACE_INCLUDE_DIRECTORIES>
relative_dir
)
# Test no items
target_include_directories(consumer
PRIVATE
)
target_include_directories(consumer
BEFORE PRIVATE
)
target_include_directories(consumer
SYSTEM BEFORE PRIVATE
)
target_include_directories(consumer
SYSTEM PRIVATE
)