mirror of
https://github.com/reactos/CMake.git
synced 2024-11-24 12:09:48 +00:00
GexEx: Validate Target names and property names differently.
In the unit test, use the same IMPORTED_LOCATION trick that the ExportImport test uses.
This commit is contained in:
parent
95d590ddba
commit
e386992152
@ -277,8 +277,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||
"$<TARGET_PROPERTY:...> expression requires one or two parameters");
|
||||
return std::string();
|
||||
}
|
||||
cmsys::RegularExpression nameValidator;
|
||||
nameValidator.compile("^[A-Za-z0-9_.-]+$");
|
||||
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_.:-]+$");
|
||||
cmsys::RegularExpression propertyNameValidator;
|
||||
propertyNameValidator.compile("^[A-Za-z0-9_]+$");
|
||||
|
||||
cmGeneratorTarget* target = context->Target;
|
||||
std::string propertyName = *parameters.begin();
|
||||
@ -301,9 +305,9 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||
|
||||
std::string targetName = parameters.front();
|
||||
propertyName = parameters[1];
|
||||
if (!nameValidator.find(targetName.c_str()))
|
||||
if (!targetNameValidator.find(targetName.c_str()))
|
||||
{
|
||||
if (!nameValidator.find(propertyName.c_str()))
|
||||
if (!propertyNameValidator.find(propertyName.c_str()))
|
||||
{
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"Target name and property name not supported.");
|
||||
@ -335,7 +339,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||
return std::string();
|
||||
}
|
||||
|
||||
if (!nameValidator.find(propertyName.c_str()))
|
||||
if (!propertyNameValidator.find(propertyName.c_str()))
|
||||
{
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"Property name not supported.");
|
||||
@ -480,7 +484,8 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
|
||||
std::string name = *parameters.begin();
|
||||
|
||||
cmsys::RegularExpression targetValidator;
|
||||
targetValidator.compile("^[A-Za-z0-9_.-]+$");
|
||||
// The ':' is supported to allow use with IMPORTED targets.
|
||||
targetValidator.compile("^[A-Za-z0-9_.:-]+$");
|
||||
if (!targetValidator.find(name.c_str()))
|
||||
{
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
|
@ -17,6 +17,7 @@ create_header(bing)
|
||||
create_header(bung)
|
||||
create_header(arguments)
|
||||
create_header(list)
|
||||
create_header(target)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
@ -24,6 +25,7 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/bar")
|
||||
include_directories("$<1:${CMAKE_CURRENT_BINARY_DIR}/bang>")
|
||||
|
||||
add_executable(TargetIncludeDirectories main.cpp)
|
||||
|
||||
set_property(TARGET TargetIncludeDirectories APPEND PROPERTY INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/bat")
|
||||
set_property(TARGET TargetIncludeDirectories APPEND PROPERTY INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/foo")
|
||||
set_property(TARGET TargetIncludeDirectories APPEND PROPERTY
|
||||
@ -34,3 +36,12 @@ include_directories("$<1:${CMAKE_CURRENT_BINARY_DIR}/bung>")
|
||||
include_directories("sing$<1:/ting>")
|
||||
|
||||
include_directories("$<1:${CMAKE_CURRENT_BINARY_DIR}/arguments;${CMAKE_CURRENT_BINARY_DIR}/list>")
|
||||
|
||||
add_library(somelib::withcolons UNKNOWN IMPORTED)
|
||||
set_property(TARGET somelib::withcolons PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/target")
|
||||
set_property(TARGET somelib::withcolons PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/target")
|
||||
|
||||
set_property(TARGET TargetIncludeDirectories
|
||||
APPEND PROPERTY INCLUDE_DIRECTORIES
|
||||
"$<TARGET_PROPERTY:somelib::withcolons,INTERFACE_INCLUDE_DIRECTORIES>"
|
||||
)
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "ting.h"
|
||||
#include "arguments.h"
|
||||
#include "list.h"
|
||||
#include "target.h"
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user