diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-07-31 14:02:07 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-07-31 14:06:34 (GMT) |
commit | c0b868220084ad6d2ca88a4fdd9564f887374fc2 (patch) | |
tree | 3cd1f4e3561f796e889a968eb8c1e3827372846f | |
parent | 0cecc7b485774be084a6d5a72e743ed9893daa5d (diff) | |
download | CMake-c0b868220084ad6d2ca88a4fdd9564f887374fc2.zip CMake-c0b868220084ad6d2ca88a4fdd9564f887374fc2.tar.gz CMake-c0b868220084ad6d2ca88a4fdd9564f887374fc2.tar.bz2 |
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.
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<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; 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 $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS> -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 $<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 +) |