summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/vstudio/impl
diff options
context:
space:
mode:
authorruki <[email protected]>2018-09-21 22:50:30 +0800
committerruki <[email protected]>2018-09-21 11:03:03 +0800
commite4ce9f64923260de45e83ca735d025e19cce45ad (patch)
tree9121156fc93b1745a1aeafe164c72ca473d6566d /xmake/plugins/project/vstudio/impl
parentb05bfd4eb937e7a7d78201921ab86c165af00491 (diff)
improve mfc rules
Diffstat (limited to 'xmake/plugins/project/vstudio/impl')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua14
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x.lua10
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua5
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