diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-05-02 07:02:01 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-05-16 17:25:06 (GMT) |
commit | 05bf9721e48f8fbf3b3b5338ec779ee5e344a6d0 (patch) | |
tree | 771762e9c751ac334c293edd9107b860b2d23c9f | |
parent | 272431a84ff13eb17cf04389428f57c7fe13e3a2 (diff) | |
download | CMake-05bf9721e48f8fbf3b3b5338ec779ee5e344a6d0.zip CMake-05bf9721e48f8fbf3b3b5338ec779ee5e344a6d0.tar.gz CMake-05bf9721e48f8fbf3b3b5338ec779ee5e344a6d0.tar.bz2 |
Fix handling of commas in arbitrary content in genexes.
As the comma is the parameter separator, it needs to be re-added
when evaluating to reconstruct arbitrary content.
-rw-r--r-- | Source/cmGeneratorExpressionEvaluator.cxx | 9 | ||||
-rw-r--r-- | Tests/GeneratorExpression/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/GeneratorExpression/check-part2.cmake | 10 |
3 files changed, 24 insertions, 5 deletions
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 6618e83..5d06199 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -1051,11 +1051,6 @@ std::string GeneratorExpressionContent::Evaluate( pend = this->ParamChildren.end(); for ( ; pit != pend; ++pit) { - if (!result.empty()) - { - result += ","; - } - std::vector<cmGeneratorExpressionEvaluator*>::const_iterator it = pit->begin(); const std::vector<cmGeneratorExpressionEvaluator*>::const_iterator end @@ -1077,6 +1072,10 @@ std::string GeneratorExpressionContent::Evaluate( return std::string(); } } + if ((pit + 1) != pend) + { + result += ","; + } } if (node->RequiresLiteralInput()) { diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 0008c16..9cd8a7f 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -120,6 +120,16 @@ add_custom_target(check-part2 ALL -Dtest_target_includes6=$<TARGET_PROPERTY:empty3,INCLUDE_DIRECTORIES> -Dtest_target_includes7=$<TARGET_PROPERTY:empty1,INTERFACE_INCLUDE_DIRECTORIES> -Dtest_target_includes8=$<TARGET_PROPERTY:empty5,INCLUDE_DIRECTORIES> + -Dtest_arbitrary_content_comma_1=$<1:a,> + -Dtest_arbitrary_content_comma_2=$<1:,a> + -Dtest_arbitrary_content_comma_3=$<1:a,,> + -Dtest_arbitrary_content_comma_4=$<1:,> + -Dtest_arbitrary_content_comma_5=$<1:,,> + -Dtest_arbitrary_content_comma_6=$<1:,,,> + -Dtest_arbitrary_content_comma_7=$<1:,,a> + -Dtest_arbitrary_content_comma_8=$<1:a,,b> + -Dtest_arbitrary_content_comma_9=$<1:a,,b,,> + -Dtest_arbitrary_content_comma_10=$<1:,,a,,b,,> -P ${CMAKE_CURRENT_SOURCE_DIR}/check-part2.cmake COMMAND ${CMAKE_COMMAND} -E echo "check done (part 2 of 2)" VERBATIM diff --git a/Tests/GeneratorExpression/check-part2.cmake b/Tests/GeneratorExpression/check-part2.cmake index 3f7187c..a1db5f6 100644 --- a/Tests/GeneratorExpression/check-part2.cmake +++ b/Tests/GeneratorExpression/check-part2.cmake @@ -34,3 +34,13 @@ check(test_target_includes5 "/empty2/public;/empty3/public;/empty2/public;/empty check(test_target_includes6 "/empty3/public;/empty3/private;/empty2/public;/empty3/public;/empty4/public") check(test_target_includes7 "/empty1/public;/empty2/public;/empty3/public;/empty4/public") check(test_target_includes8 "/empty5/private1;/empty5/private2") +check(test_arbitrary_content_comma_1 "a,") +check(test_arbitrary_content_comma_2 ",a") +check(test_arbitrary_content_comma_3 "a,,") +check(test_arbitrary_content_comma_4 ",") +check(test_arbitrary_content_comma_5 ",,") +check(test_arbitrary_content_comma_6 ",,,") +check(test_arbitrary_content_comma_7 ",,a") +check(test_arbitrary_content_comma_8 "a,,b") +check(test_arbitrary_content_comma_9 "a,,b,,") +check(test_arbitrary_content_comma_10 ",,a,,b,,") |