add_custom_command: Fix dependency on macOS framework target
When the `DEPENDS` option names a logical target name, convert to the "real" path of that target rather than any of the symlink-provided alternative file names. This makes the dependencies consistent with the outputs named by link rules producing the target artifacts. Fixes: #20264
This commit is contained in:
parent
ab2fc91821
commit
08699cec68
@ -1969,7 +1969,8 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName,
|
|||||||
case cmStateEnums::SHARED_LIBRARY:
|
case cmStateEnums::SHARED_LIBRARY:
|
||||||
case cmStateEnums::MODULE_LIBRARY:
|
case cmStateEnums::MODULE_LIBRARY:
|
||||||
case cmStateEnums::UNKNOWN_LIBRARY:
|
case cmStateEnums::UNKNOWN_LIBRARY:
|
||||||
dep = target->GetLocation(config);
|
dep = target->GetFullPath(config, cmStateEnums::RuntimeBinaryArtifact,
|
||||||
|
/*realname=*/true);
|
||||||
return true;
|
return true;
|
||||||
case cmStateEnums::OBJECT_LIBRARY:
|
case cmStateEnums::OBJECT_LIBRARY:
|
||||||
// An object library has no single file on which to depend.
|
// An object library has no single file on which to depend.
|
||||||
|
@ -566,3 +566,11 @@ add_custom_command(
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(depends_on_in_rel_source_path ALL DEPENDS "depends_on_in_rel_source_path.txt")
|
add_custom_target(depends_on_in_rel_source_path ALL DEPENDS "depends_on_in_rel_source_path.txt")
|
||||||
|
|
||||||
|
add_library(mac_fw SHARED mac_fw.c)
|
||||||
|
set_target_properties(mac_fw PROPERTIES
|
||||||
|
FRAMEWORK 1
|
||||||
|
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib
|
||||||
|
)
|
||||||
|
add_custom_command(OUTPUT mac_fw.txt COMMAND ${CMAKE_COMMAND} -E touch mac_fw.txt DEPENDS mac_fw)
|
||||||
|
add_custom_target(drive_mac_fw ALL DEPENDS mac_fw.txt)
|
||||||
|
4
Tests/CustomCommand/mac_fw.c
Normal file
4
Tests/CustomCommand/mac_fw.c
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
int mac_fw(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user