diff options
| author | ruki <[email protected]> | 2017-07-29 15:56:18 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-07-29 15:56:18 +0800 |
| commit | 94f00ffc6d2e70316b8200f33ba6caeffce8674a (patch) | |
| tree | 51e77a62590636c4019e852da7378818ddf288cd | |
| parent | cac0dd80b29ee923382442c274d37fb73589cb06 (diff) | |
support mode and arch for vs201x pch
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x.lua | 6 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua | 14 |
2 files changed, 12 insertions, 8 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index 07ded3ce5..7b470e94e 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -47,6 +47,10 @@ function _make_targetinfo(mode, arch, target) targetinfo.sdkver = (vcvarsall[arch] or {}).sdkver end + -- save precompiled header file (.pch) + targetinfo.pcheaderfile = target:pcheaderfile() + target:set("precompiled_header", nil) + -- save symbols targetinfo.symbols = target:get("symbols") @@ -197,8 +201,6 @@ function make(outputdir, vsinfo) local precompiled_header, precompiled_source = target:pcsourcefile() _target.pcheader = precompiled_header -- header.h _target.pcsourcefile = precompiled_source -- header.cpp - _target.pcheaderfile = target:pcheaderfile() -- header.h.pch - target:set("precompiled_header", nil) -- init target info _target.name = targetname diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua index b5904209a..d302b1bf4 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua @@ -394,8 +394,8 @@ function _make_common_item(vcxprojfile, vsinfo, target, targetinfo, vcxprojdir) -- make precompiled header and outputfile vcxprojfile:print("<PrecompiledHeader>Use</PrecompiledHeader>") vcxprojfile:print("<PrecompiledHeaderFile>%s</PrecompiledHeaderFile>", pcheader) - if target.pcheaderfile then - vcxprojfile:print("<PrecompiledHeaderOutputFile>%s</PrecompiledHeaderOutputFile>", path.relative(path.absolute(target.pcheaderfile), vcxprojdir)) + if targetinfo.pcheaderfile then + vcxprojfile:print("<PrecompiledHeaderOutputFile>%s</PrecompiledHeaderOutputFile>", path.relative(path.absolute(targetinfo.pcheaderfile), vcxprojdir)) end end @@ -600,15 +600,17 @@ function _make_source_file_forspec(vcxprojfile, vsinfo, sourcefile, sourceinfo, end -- make source file for precompiled header -function _make_source_file_forpch(vcxprojfile, vsinfo, pcsourcefile, pcheaderfile, vcxprojdir) +function _make_source_file_forpch(vcxprojfile, vsinfo, pcsourcefile, targetinfo, vcxprojdir) -- add precompiled source file local sourcefile = path.relative(path.absolute(pcsourcefile), vcxprojdir) - local objectfile = path.relative(path.absolute(pcheaderfile .. ".obj"), vcxprojdir) vcxprojfile:enter("<ClCompile Include=\"%s\">", sourcefile) vcxprojfile:print("<PrecompiledHeader>Create</PrecompiledHeader>") - vcxprojfile:print("<ObjectFileName>%s</ObjectFileName>", objectfile) vcxprojfile:print("<AdditionalOptions> %%(AdditionalOptions)</AdditionalOptions>") + for _, info in ipairs(targetinfo) do + local objectfile = path.relative(path.absolute(info.pcheaderfile .. ".obj"), vcxprojdir) + vcxprojfile:print("<ObjectFileName Condition=\"\'%$(Configuration)|%$(Platform)\'==\'%s|%s\'\">%s</ObjectFileName>", info.mode, info.arch, objectfile) + end vcxprojfile:leave("</ClCompile>") end @@ -645,7 +647,7 @@ function _make_source_files(vcxprojfile, vsinfo, target, vcxprojdir) -- make precompiled source file if target.pcsourcefile then - _make_source_file_forpch(vcxprojfile, vsinfo, target.pcsourcefile, target.pcheaderfile, vcxprojdir) + _make_source_file_forpch(vcxprojfile, vsinfo, target.pcsourcefile, target.info, vcxprojdir) end vcxprojfile:leave("</ItemGroup>") |
