summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/cmake/cmakelists.lua
diff options
context:
space:
mode:
authorPierreEVEN <[email protected]>2025-05-03 08:49:32 +0200
committerPierreEVEN <[email protected]>2025-05-03 08:49:32 +0200
commit1b5182e458df12adcbd011c2325b0155ffbe4d48 (patch)
tree9773aad7c0720d461c5420ea78141cb306cd95eb /xmake/plugins/project/cmake/cmakelists.lua
parent2774ecbc0961e1e2b1f995d8937b44c2c90e11c6 (diff)
[fix] Use the new cmake syntax with a custom target add_library(... OBJECT IMPORTED ...) instead of just using the target_link_library to linnk prebuilt obj files
Diffstat (limited to 'xmake/plugins/project/cmake/cmakelists.lua')
-rw-r--r--xmake/plugins/project/cmake/cmakelists.lua9
1 files changed, 7 insertions, 2 deletions
diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua
index e65f89cee..858d23b8f 100644
--- a/xmake/plugins/project/cmake/cmakelists.lua
+++ b/xmake/plugins/project/cmake/cmakelists.lua
@@ -1008,9 +1008,12 @@ function _add_target_link_libraries(cmakelists, target, outputdir)
end
end
+
local has_links = #target:objectfiles() > objectfiles_set:size()
+ local key = target:name() .. "_" .. hash.uuid():split("-", {plain = true})[1]
if has_links then
- cmakelists:print("target_link_libraries(%s PRIVATE", target:name())
+ cmakelists:print("add_library(target_objectfiles_%s OBJECT IMPORTED GLOBAL)", key)
+ cmakelists:print("set_property(TARGET target_objectfiles_%s PROPERTY IMPORTED_OBJECTS", key)
for _, objectfile in ipairs(target:objectfiles()) do
if not objectfiles_set:has(objectfile) then
cmakelists:print(" " .. _get_relative_unix_path_to_cmake(objectfile, outputdir))
@@ -1020,7 +1023,8 @@ function _add_target_link_libraries(cmakelists, target, outputdir)
if #object_deps ~= 0 then
if not has_links then
- cmakelists:print("target_link_libraries(%s PRIVATE", target:name())
+ cmakelists:print("add_library(target_objectfiles_%s OBJECT IMPORTED GLOBAL)", key)
+ cmakelists:print("set_property(TARGET target_objectfiles_%s PROPERTY IMPORTED_OBJECTS", key)
has_links = true
end
for _, dep in ipairs(object_deps) do
@@ -1030,6 +1034,7 @@ function _add_target_link_libraries(cmakelists, target, outputdir)
if has_links then
cmakelists:print(")")
+ cmakelists:print("target_link_libraries(%s PRIVATE target_objectfiles_%s)", target:name(), key)
end
end