From c0b868220084ad6d2ca88a4fdd9564f887374fc2 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 31 Jul 2013 16:02:07 +0200 Subject: 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. --- Source/cmTargetPropCommandBase.cxx | 6 +++--- .../target_compile_definitions/CMakeLists.txt | 5 +++++ Tests/CMakeCommands/target_compile_options/CMakeLists.txt | 5 +++++ .../target_include_directories/CMakeLists.txt | 14 ++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx index 287ce46..37aa604 100644 --- a/Source/cmTargetPropCommandBase.cxx +++ b/Source/cmTargetPropCommandBase.cxx @@ -19,7 +19,7 @@ bool cmTargetPropCommandBase ::HandleArguments(std::vector 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; diff --git a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt index 6d0e646..900dbd0 100644 --- a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt +++ b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt @@ -20,3 +20,8 @@ target_compile_definitions(consumer PRIVATE $ -DDASH_D_DEFINE ) + +# Test no items +target_compile_definitions(consumer + PRIVATE +) diff --git a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt index 06a48fb..1d04639 100644 --- a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt +++ b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt @@ -33,3 +33,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") "DO_GNU_TESTS" ) endif() + +# Test no items +target_compile_options(consumer + PRIVATE +) diff --git a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt index c03f0f8..21b8e15 100644 --- a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt +++ b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt @@ -47,3 +47,17 @@ target_include_directories(consumer $ 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 +) -- cgit v0.12