Przeglądaj źródła

target_link_libraries: Add FIXME comment for out-of-dir genex list

Issue: #20204
Brad King 5 lat temu
rodzic
commit
c40229968c

+ 4 - 0
Source/cmTargetLinkLibrariesCommand.cxx

@@ -406,6 +406,10 @@ static bool HandleLibrary(cmMakefile& mf, cmTarget* target,
     // the name to tell ResolveLinkItem to look up the name in the
     // caller's directory.
     cmDirectoryId const dirId = mf.GetDirectoryId();
+    // FIXME: The "lib" may be a genex with a list inside it.
+    // After expansion this id will only attach to the last entry,
+    // or may attach to an empty string!  We will need another way
+    // to encode this that can apply to a whole list.  See issue #20204.
     libRef = lib + CMAKE_DIRECTORY_ID_SEP + dirId.String;
   } else {
     // This is an absolute path or a library name added by a caller

+ 3 - 0
Tests/CMakeCommands/target_link_libraries/SubDirB/CMakeLists.txt

@@ -4,6 +4,9 @@ add_executable(SubDirB SubDirB.c)
 # be visible to the directory in which TopDir is defined.
 target_link_libraries(TopDir PUBLIC SameNameImported)
 
+#FIXME: Demonstrate known issue #20204.
+#target_link_libraries(TopDir PUBLIC "$<1:SameNameImported;SameNameImported>")
+
 # Link SubDirA to a target imported in this directory that has the same
 # name as a target imported in SubDirA's directory.  We verify when
 # compiling SubDirA that it sees our target and its own.