cmTarget: Fix the property compatibility error message

Don't refer to 'both', but a 'mixture'. List all compatible interface
property types possible.

Add another test for a mixture of three compatibilities.
This commit is contained in:
Stephen Kelly 2013-12-27 00:29:52 +01:00
parent 43340a9c96
commit 79db8ef78d
7 changed files with 23 additions and 4 deletions

View File

@ -6005,7 +6005,8 @@ void cmTarget::CheckPropertyCompatibility(cmComputeLinkInformation *info,
<< propsString << << propsString <<
" property in the dependencies of target \"" << this->GetName() << " property in the dependencies of target \"" << this->GetName() <<
"\". This is not allowed. A property may only require compatibility " "\". This is not allowed. A property may only require compatibility "
"in a boolean interpretation or a string interpretation, but not both."; "in a boolean interpretation, a numeric minimum, a numeric maximum or a "
"string interpretation, but not a mixture.";
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
} }
} }

View File

@ -2,4 +2,5 @@ CMake Error in CMakeLists.txt:
Property "SOMETHING" appears in both the COMPATIBLE_INTERFACE_BOOL and the Property "SOMETHING" appears in both the COMPATIBLE_INTERFACE_BOOL and the
COMPATIBLE_INTERFACE_STRING property in the dependencies of target "user". COMPATIBLE_INTERFACE_STRING property in the dependencies of target "user".
This is not allowed. A property may only require compatibility in a This is not allowed. A property may only require compatibility in a
boolean interpretation or a string interpretation, but not both. boolean interpretation, a numeric minimum, a numeric maximum or a string
interpretation, but not a mixture.

View File

@ -1,9 +1,8 @@
add_library(foo UNKNOWN IMPORTED) add_library(foo UNKNOWN IMPORTED)
add_library(bar UNKNOWN IMPORTED)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SOMETHING) set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SOMETHING)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_STRING SOMETHING) set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_STRING SOMETHING)
add_executable(user main.cpp) add_executable(user main.cpp)
target_link_libraries(user foo bar) target_link_libraries(user foo)

View File

@ -0,0 +1,7 @@
CMake Error in CMakeLists.txt:
Property "OTHER" appears in both the COMPATIBLE_INTERFACE_BOOL,
COMPATIBLE_INTERFACE_NUMBER_MIN and the COMPATIBLE_INTERFACE_STRING
property in the dependencies of target "user". This is not allowed. A
property may only require compatibility in a boolean interpretation, a
numeric minimum, a numeric maximum or a string interpretation, but not a
mixture.

View File

@ -0,0 +1,9 @@
add_library(foo UNKNOWN IMPORTED)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL OTHER)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_STRING OTHER)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_NUMBER_MIN OTHER)
add_executable(user main.cpp)
target_link_libraries(user foo)

View File

@ -9,6 +9,7 @@ run_cmake(InterfaceString-mismatch-depend-self)
run_cmake(InterfaceString-mismatched-use) run_cmake(InterfaceString-mismatched-use)
run_cmake(InterfaceString-builtin-prop) run_cmake(InterfaceString-builtin-prop)
run_cmake(InterfaceString-Bool-Conflict) run_cmake(InterfaceString-Bool-Conflict)
run_cmake(InterfaceString-Bool-Min-Conflict)
run_cmake(DebugProperties) run_cmake(DebugProperties)
if (QT_QMAKE_EXECUTABLE}) if (QT_QMAKE_EXECUTABLE})