diff options
| author | ruki <[email protected]> | 2021-05-21 22:50:20 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-05-21 22:50:20 +0800 |
| commit | 6eea080650bdf56d01384eb735f76a4aa56676f5 (patch) | |
| tree | 83d30f930fd2abb6bd5fa7af2e8bd92c5f0968a1 /xmake/core/project/target.lua | |
| parent | f84775ba240e751cc266c5cccd0acbc18f3bae24 (diff) | |
add prefis, suffix and extension apis
Diffstat (limited to 'xmake/core/project/target.lua')
| -rw-r--r-- | xmake/core/project/target.lua | 56 |
1 files changed, 50 insertions, 6 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua index 49a3d6c4d..67e7e31f3 100644 --- a/xmake/core/project/target.lua +++ b/xmake/core/project/target.lua @@ -998,15 +998,36 @@ function _instance:filename() -- make the target file name and attempt to use the format of linker first local filename = self:get("filename") if not filename then - --[[ - local prefixname = self:get("prefixname") or "" - local suffixname = self:get("suffixname") or "" - ]] - filename = target.filename(self:basename(), targetkind, {plat = self:plat(), arch = self:arch(), format = self:linker():format(targetkind)}) + local prefixname = self:get("prefixname") + local suffixname = self:get("suffixname") + local extension = self:get("extension") + filename = target.filename(self:basename(), targetkind, { + plat = self:plat(), arch = self:arch(), + prefixname = prefixname, + suffixname = suffixname, + extension = extension, + format = self:linker():format(targetkind)}) end return filename end +-- get the link name only for static/shared library +function _instance:linkname() + if self:is_static() or self:is_shared() then + local filename = self:get("filename") + if filename then + return target.linkname(filename) + else + local linkname = self:basename() + local suffixname = self:get("suffixname") + if suffixname then + linkname = linkname .. suffixname + end + return linkname + end + end +end + -- get the target file function _instance:targetfile() local filename = self:filename() @@ -1884,6 +1905,7 @@ function target.apis() , "target.set_symbols" , "target.set_filename" , "target.set_basename" + , "target.set_extension" , "target.set_prefixname" , "target.set_suffixname" , "target.set_warnings" @@ -1984,8 +2006,30 @@ function target.filename(targetname, targetkind, opt) assert(targetname and targetkind) -- make filename by format + local filename = targetname local format = opt.format or platform.format(targetkind, opt.plat, opt.arch) - return format and (format:gsub("%$%(name%)", targetname)) or targetname + if format then + local splitinfo = format:split("$(name)", {plain = true, strict = true}) + local prefixname = splitinfo[1] or "" + local suffixname = "" + local extension = splitinfo[2] or "" + splitinfo = extension:split('.', {plain = true, limit = 2, strict = true}) + if #splitinfo == 2 and splitinfo[1] ~= "" then + suffixname = splitinfo[1] + extension = "." .. splitinfo[2] + end + if opt.prefixname then + prefixname = opt.prefixname + end + if opt.suffixname then + suffixname = opt.suffixname + end + if opt.extension then + extension = opt.extension + end + filename = prefixname .. targetname .. suffixname .. extension + end + return filename end -- get the link name of the target file |
