Restore support for target names with '+' (#13986)
Extend the range of valid target names with the + sign. This character can commonly be used for target names, such as those containing 'c++'. Add a test but skip it for Borland and Watcom tools which do not support the character. Suggested-By: Benjamin Kloster
This commit is contained in:
parent
254687d31f
commit
1bdd167577
|
@ -393,7 +393,7 @@ bool cmGeneratorExpression::IsValidTargetName(const std::string &input)
|
|||
cmsys::RegularExpression targetNameValidator;
|
||||
// The ':' is supported to allow use with IMPORTED targets. At least
|
||||
// Qt 4 and 5 IMPORTED targets use ':' as the namespace delimiter.
|
||||
targetNameValidator.compile("^[A-Za-z0-9_.:-]+$");
|
||||
targetNameValidator.compile("^[A-Za-z0-9_.:+-]+$");
|
||||
|
||||
return targetNameValidator.find(input.c_str());
|
||||
}
|
||||
|
|
|
@ -102,7 +102,14 @@ target_compile_definitions(depG INTERFACE
|
|||
TEST_DEF
|
||||
)
|
||||
|
||||
|
||||
add_executable(targetC targetC.cpp)
|
||||
if(NOT BORLAND AND NOT WATCOM)
|
||||
# Linking to a target containing a + should be non-fatal, though it does
|
||||
# not work at all on Borland or watcom
|
||||
add_library(wrapc++ empty.cpp)
|
||||
target_link_libraries(targetC wrapc++)
|
||||
endif()
|
||||
# The TARGET_PROPERTY expression is duplicated below to test that there is no
|
||||
# shortcutting of the evaluation by returning an empty string.
|
||||
set(_exe_test $<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
// No content
|
Loading…
Reference in New Issue