diff options
| author | ruki <[email protected]> | 2018-09-21 22:50:30 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-09-21 11:03:03 +0800 |
| commit | e4ce9f64923260de45e83ca735d025e19cce45ad (patch) | |
| tree | 9121156fc93b1745a1aeafe164c72ca473d6566d /xmake/plugins/project/vstudio/impl | |
| parent | b05bfd4eb937e7a7d78201921ab86c165af00491 (diff) | |
improve mfc rules
Diffstat (limited to 'xmake/plugins/project/vstudio/impl')
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua | 14 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x.lua | 10 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua | 5 |
3 files changed, 25 insertions, 4 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua index 2e29b8281..077e96bfa 100644 --- a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua @@ -279,11 +279,20 @@ function _make_configurations(vcprojfile, vsinfo, target, vcprojdir) end end + -- use mfc? not used: 0, static: 1, shared: 2 + local usemfc = 0 + if target:rule("win.sdk.mfc.shared_app") or target:rule("win.sdk.mfc.shared") then + usemfc = 2 + elseif target:rule("win.sdk.mfc.static_app") or target:rule("win.sdk.mfc.static") then + usemfc = 1 + end + -- set unicode local unicode = false - for _, flag in pairs(compflags) do + for _, flag in ipairs(compflags) do if flag:find("[%-|/]DUNICODE") then unicode = true + break end end @@ -296,7 +305,8 @@ function _make_configurations(vcprojfile, vsinfo, target, vcprojdir) vcprojfile:print("OutputDirectory=\"%s\"", path.relative(path.absolute(target:targetdir()), vcprojdir)) vcprojfile:print("IntermediateDirectory=\"%s\"", path.relative(path.absolute(target:objectdir()), vcprojdir)) vcprojfile:print("ConfigurationType=\"%d\"", assert(configuration_types[target:get("kind")])) - vcprojfile:print("CharacterSet=\"%d\"", ifelse(unicode, 1, 2)) -- mbc: 2, wcs: 1 + vcprojfile:print("CharacterSet=\"%d\"", unicode and 1 or 2) -- mbc: 2, wcs: 1 + vcprojfile:print("UseOfMFC=\"%d\"", usemfc) vcprojfile:print(">") -- make VCPreBuildEventTool diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index 65c4d1d2a..7f8c619fe 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -93,10 +93,18 @@ function _make_targetinfo(mode, arch, target) local linkflags = linker.linkflags(target:get("kind"), target:sourcekinds(), {target = target}) targetinfo.linkflags = linkflags + -- use mfc? save the mfc runtime kind + if target:rule("win.sdk.mfc.shared_app") or target:rule("win.sdk.mfc.shared") then + targetinfo.usemfc = "Dynamic" + elseif target:rule("win.sdk.mfc.static_app") or target:rule("win.sdk.mfc.static") then + targetinfo.usemfc = "Static" + end + -- set unicode - for _, flag in pairs(firstcompflags) do + for _, flag in ipairs(firstcompflags) do if flag:find("[%-|/]DUNICODE") then targetinfo.unicode = true + break end end diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua index 146e74a67..4275dfd8d 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua @@ -172,7 +172,10 @@ function _make_configurations(vcxprojfile, vsinfo, target, vcxprojdir) vcxprojfile:enter("<PropertyGroup Condition=\"\'%$(Configuration)|%$(Platform)\'==\'%s|%s\'\" Label=\"Configuration\">", targetinfo.mode, targetinfo.arch) vcxprojfile:print("<ConfigurationType>%s</ConfigurationType>", assert(configuration_types[target.kind])) vcxprojfile:print("<PlatformToolset>v%s</PlatformToolset>", assert(toolset_versions["vs" .. vsinfo.vstudio_version])) - vcxprojfile:print("<CharacterSet>%s</CharacterSet>", ifelse(targetinfo.unicode, "Unicode", "MultiByte")) + vcxprojfile:print("<CharacterSet>%s</CharacterSet>", targetinfo.unicode and "Unicode" or "MultiByte") + if targetinfo.usemfc then + vcxprojfile:print("<UseOfMfc>%s</UseOfMfc>", targetinfo.usemfc) + end vcxprojfile:leave("</PropertyGroup>") end |
