Commit 4a7eb0cd authored by Brad King's avatar Brad King
Browse files

Merge branch 'CONFIG-LOCATION-CMP0026' into release

parents 43b39b1c c903b531
......@@ -3,7 +3,8 @@ CMP0026
Disallow use of the LOCATION target property.
CMake 2.8.12 and lower allowed reading the LOCATION target property to
CMake 2.8.12 and lower allowed reading the LOCATION target
property (and configuration-specific variants) to
determine the eventual location of build targets. This relies on the
assumption that all necessary information is available at
configure-time to determine the final location and filename of the
......@@ -17,8 +18,8 @@ $<TARGET_FILE> generator expression together with the file(GENERATE)
subcommand to generate a file containing the target location.
The OLD behavior for this policy is to allow reading the LOCATION
property from build-targets. The NEW behavior for this policy is to
not to allow reading the LOCATION property from build-targets.
properties from build-targets. The NEW behavior for this policy is to
not to allow reading the LOCATION properties from build-targets.
This policy was introduced in CMake version 3.0. CMake version
|release| warns when the policy is not set and uses OLD behavior. Use
......
......@@ -2730,6 +2730,21 @@ const char *cmTarget::GetProperty(const char* prop,
this->GetLocation(configName.c_str()),
cmProperty::TARGET);
}
// Support "<CONFIG>_LOCATION".
if(cmHasLiteralSuffix(prop, "_LOCATION"))
{
std::string configName(prop, strlen(prop) - 9);
if(configName != "IMPORTED")
{
if (!this->HandleLocationPropertyPolicy())
{
return 0;
}
this->Properties.SetProperty(prop,
this->GetLocation(configName.c_str()),
cmProperty::TARGET);
}
}
}
if(strcmp(prop,"INCLUDE_DIRECTORIES") == 0)
{
......
CMake Error at CMP0026-CONFIG-LOCATION-NEW.cmake:7 \(get_target_property\):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property may not be read from target "somelib". Use the
target name directly with add_custom_command, or use the generator
expression \$<TARGET_FILE>, as appropriate.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
enable_language(CXX)
cmake_policy(SET CMP0026 NEW)
add_library(somelib empty.cpp)
get_target_property(_loc somelib Debug_LOCATION)
enable_language(CXX)
cmake_policy(SET CMP0026 OLD)
add_library(somelib empty.cpp)
get_target_property(_loc somelib Debug_LOCATION)
CMake Warning \(dev\) at CMP0026-CONFIG-LOCATION-WARN.cmake:5 \(get_target_property\):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "somelib". Use the
target name directly with add_custom_command, or use the generator
expression \$<TARGET_FILE>, as appropriate.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
enable_language(CXX)
add_library(somelib empty.cpp)
get_target_property(_loc somelib Debug_LOCATION)
CMake Error at CMP0026-LOCATION-CONFIG-NEW.cmake:7 \(get_target_property\):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property may not be read from target "somelib". Use the
target name directly with add_custom_command, or use the generator
expression \$<TARGET_FILE>, as appropriate.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
enable_language(CXX)
cmake_policy(SET CMP0026 NEW)
add_library(somelib empty.cpp)
get_target_property(_loc somelib LOCATION_Debug)
enable_language(CXX)
cmake_policy(SET CMP0026 OLD)
add_library(somelib empty.cpp)
get_target_property(_loc somelib LOCATION_Debug)
CMake Warning \(dev\) at CMP0026-LOCATION-CONFIG-WARN.cmake:5 \(get_target_property\):
Policy CMP0026 is not set: Disallow use of the LOCATION target property.
Run "cmake --help-policy CMP0026" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
The LOCATION property should not be read from target "somelib". Use the
target name directly with add_custom_command, or use the generator
expression \$<TARGET_FILE>, as appropriate.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.
enable_language(CXX)
add_library(somelib empty.cpp)
get_target_property(_loc somelib LOCATION_Debug)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment