diff options
| author | ruki <[email protected]> | 2022-08-14 22:08:03 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-08-14 22:08:03 +0800 |
| commit | fcebe80886634ed74bbd1600f175287596528c7f (patch) | |
| tree | 701b16f4a9780a621d16519a6574a3af6dadcf9d | |
| parent | d9e3a62bdd4b6390318e0cdebccfe96562c4ef12 (diff) | |
add objs to cmake link
| -rw-r--r-- | xmake/plugins/project/cmake/cmakelists.lua | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua index 153e3c4ad..16c73e946 100644 --- a/xmake/plugins/project/cmake/cmakelists.lua +++ b/xmake/plugins/project/cmake/cmakelists.lua @@ -713,7 +713,7 @@ function _add_target_vs_runtime(cmakelists, target) end -- add target link libraries -function _add_target_link_libraries(cmakelists, target) +function _add_target_link_libraries(cmakelists, target, outputdir) -- add links local links = _get_configs_from_target(target, "links") @@ -732,6 +732,25 @@ function _add_target_link_libraries(cmakelists, target) end cmakelists:print(")") end + + -- add other object files, maybe from custom rules + local objectfiles_set = hashset.new() + for _, sourcebatch in table.orderpairs(target:sourcebatches()) do + if _sourcebatch_is_built(sourcebatch) then + for _, objectfile in ipairs(sourcebatch.objectfiles) do + objectfiles_set:insert(objectfile) + end + end + end + if #target:objectfiles() > objectfiles_set:size() then + cmakelists:print("target_link_libraries(%s PRIVATE", target:name()) + for _, objectfile in ipairs(target:objectfiles()) do + if not objectfiles_set:has(objectfile) then + cmakelists:print(" " .. _get_unix_path_relative_to_cmake(objectfile, outputdir)) + end + end + cmakelists:print(")") + end end -- add target link directories @@ -1013,7 +1032,7 @@ function _add_target(cmakelists, target, outputdir) _add_target_vs_runtime(cmakelists, target) -- add target link libraries - _add_target_link_libraries(cmakelists, target) + _add_target_link_libraries(cmakelists, target, outputdir) -- add target link directories _add_target_link_directories(cmakelists, target, outputdir) |
