cmTarget: Don't assert on object libraries for configure-time location.

Commit b8af2011 (cmTarget: Fix listing of source files at
configure-time., 2014-04-13) refactored a GetObjectLibrariesCMP0026
method out of GetLanguages.  In flight, a conditional use of a target
if available was changed to an assert-available.

This code is only used to read the LOCATION property at configure
time, when the link information is incomplete, and not all targets
are defined, so the assert is inappropriate, even though it can lead
to incorrect information being generated.  CMP0026 warns about the
potentially incorrect information anyway.
This commit is contained in:
Stephen Kelly 2014-05-06 13:16:23 +02:00
parent b8af201168
commit d648c4766f
5 changed files with 31 additions and 2 deletions

View File

@ -5406,8 +5406,10 @@ cmTarget::GetObjectLibrariesCMP0026(std::vector<cmTarget*>& objlibs) const
continue;
}
cmTarget *objLib = this->Makefile->FindTargetToUse(objLibName.c_str());
assert(objLib);
objlibs.push_back(objLib);
if(objLib)
{
objlibs.push_back(objLib);
}
}
}
}

View File

@ -0,0 +1 @@
0

View File

@ -0,0 +1,12 @@
CMake Warning \(dev\) at ObjlibNotDefined.cmake:[0-9]+ \(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 "objlibuser". 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.

View File

@ -0,0 +1,13 @@
enable_language(CXX)
add_executable(objlibuser
empty.cpp
$<TARGET_OBJECTS:bar>
)
get_target_property(_location objlibuser LOCATION)
add_library(bar OBJECT
empty.cpp
)

View File

@ -9,3 +9,4 @@ run_cmake(CMP0026-CONFIG-LOCATION-WARN)
run_cmake(CMP0026-LOCATION-CONFIG-NEW)
run_cmake(CMP0026-LOCATION-CONFIG-OLD)
run_cmake(CMP0026-LOCATION-CONFIG-WARN)
run_cmake(ObjlibNotDefined)