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 <<
" property in the dependencies of target \"" << this->GetName() <<
"\". 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());
}
}

View File

@ -2,4 +2,5 @@ CMake Error in CMakeLists.txt:
Property "SOMETHING" appears in both the COMPATIBLE_INTERFACE_BOOL 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 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(bar UNKNOWN IMPORTED)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SOMETHING)
set_property(TARGET foo APPEND PROPERTY COMPATIBLE_INTERFACE_STRING SOMETHING)
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-builtin-prop)
run_cmake(InterfaceString-Bool-Conflict)
run_cmake(InterfaceString-Bool-Min-Conflict)
run_cmake(DebugProperties)
if (QT_QMAKE_EXECUTABLE})