diff options
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua | 12 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x.lua | 6 | ||||
| -rw-r--r-- | xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua | 22 |
3 files changed, 16 insertions, 24 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua index fe7586c69..50dca7331 100644 --- a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua @@ -40,7 +40,7 @@ function _make_compflags(sourcefile, target, vcprojdir) -- replace -Idir or /Idir flag = flag:gsub("[%-|/]I(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcprojdir) end @@ -49,7 +49,7 @@ function _make_compflags(sourcefile, target, vcprojdir) -- replace -Fdsymbol.pdb or /Fdsymbol.pdb flag = flag:gsub("[%-|/]Fd(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcprojdir) end @@ -82,7 +82,7 @@ function _make_linkflags(target, vcprojdir) -- replace -libpath:dir or /libpath:dir flag = flag:gsub("[%-|/]libpath:(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcprojdir) end @@ -91,7 +91,7 @@ function _make_linkflags(target, vcprojdir) -- replace -pdb:symbol.pdb or /pdb:symbol.pdb flag = flag:gsub("[%-|/]pdb:(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcprojdir) end @@ -249,8 +249,8 @@ function _make_configurations(vcprojfile, vsinfo, target, vcprojdir) -- make configuration for the current mode vcprojfile:enter("<Configuration") vcprojfile:print("Name=\"$(mode)|Win32\"") - vcprojfile:print("OutputDirectory=\"%s\"", path.relative(path.absolute(config.get("buildir")), vcprojdir)) - vcprojfile:print("IntermediateDirectory=\"%$(ConfigurationName)\"") + 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=\"2\"") -- mbc: 2, wcs: 1 vcprojfile:print(">") diff --git a/xmake/plugins/project/vstudio/impl/vs201x.lua b/xmake/plugins/project/vstudio/impl/vs201x.lua index 37d47e22e..8ef5681d2 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x.lua @@ -67,6 +67,12 @@ function _make_targetinfo(mode, arch, target) -- save sourcebatches targetinfo.sourcebatches = target:sourcebatches() + + -- save target dir + targetinfo.targetdir = target:targetdir() + + -- save object dir + targetinfo.objectdir = target:objectdir() -- save compiler flags targetinfo.compflags = {} diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua index 7fc12a53a..d9efafdaa 100644 --- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua +++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua @@ -36,7 +36,7 @@ function _make_compflags(sourcefile, targetinfo, vcxprojdir) -- -Idir or /Idir flag = flag:gsub("[%-|/]I(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcxprojdir) end @@ -64,7 +64,7 @@ function _make_linkflags(targetinfo, vcxprojdir) -- replace -libpath:dir or /libpath:dir flag = flag:gsub("[%-|/]libpath:(.*)", function (dir) - dir = dir:trim() + dir = path.translate(dir:trim()) if not path.is_absolute(dir) then dir = path.relative(path.absolute(dir), vcxprojdir) end @@ -196,11 +196,10 @@ function _make_configurations(vcxprojfile, vsinfo, target, vcxprojdir) -- make OutputDirectory and IntermediateDirectory for _, targetinfo in ipairs(target.info) do vcxprojfile:enter("<PropertyGroup Condition=\"\'%$(Configuration)|%$(Platform)\'==\'%s|%s\'\">", targetinfo.mode, targetinfo.arch) - vcxprojfile:print("<OutDir>%s\\</OutDir>", path.relative(path.absolute(config.get("buildir")), vcxprojdir)) - vcxprojfile:print("<IntDir>%$(Configuration)\\</IntDir>") + vcxprojfile:print("<OutDir>%s\\</OutDir>", path.relative(path.absolute(targetinfo.targetdir), vcxprojdir)) + vcxprojfile:print("<IntDir>%s\\</IntDir>",path.relative(path.absolute(targetinfo.objectdir),vcxprojdir)) vcxprojfile:print("<TargetName>%s</TargetName>", path.basename(targetinfo.targetfile)) vcxprojfile:print("<TargetExt>%s</TargetExt>", path.extension(targetinfo.targetfile)) - vcxprojfile:print("<TargetPath>%s</TargetPath>", path.relative(path.absolute(targetinfo.targetfile), vcxprojdir)) if target.kind == "binary" then vcxprojfile:print("<LinkIncremental>true</LinkIncremental>") @@ -355,12 +354,6 @@ function _make_common_item(vcxprojfile, vsinfo, target, targetinfo, vcxprojdir) end end vcxprojfile:print("<GenerateDebugInformation>%s</GenerateDebugInformation>", tostring(debug)) - - -- make *.pdb file path - local symbolfile = targetinfo.symbolfile - if symbolfile then - vcxprojfile:print("<ProgramDatabaseFile>%s</ProgramDatabaseFile>", path.relative(path.absolute(symbolfile), vcxprojdir)) - end end -- make SubSystem @@ -371,8 +364,6 @@ function _make_common_item(vcxprojfile, vsinfo, target, targetinfo, vcxprojdir) -- make TargetMachine vcxprojfile:print("<TargetMachine>%s</TargetMachine>", ifelse(targetinfo.arch == "x64", "MachineX64", "MachineX86")) - -- make OutputFile - vcxprojfile:print("<OutputFile>%s</OutputFile>", path.relative(path.absolute(targetinfo.targetfile), vcxprojdir)) vcxprojfile:leave("</%s>", linkerkinds[targetinfo.targetkind]) @@ -382,11 +373,6 @@ function _make_common_item(vcxprojfile, vsinfo, target, targetinfo, vcxprojdir) -- make source options _make_source_options(vcxprojfile, targetinfo.commonflags) - -- make *.pdb file path - local symbolfile = targetinfo.symbolfile - if symbolfile then - vcxprojfile:print("<ProgramDatabaseFile>%s</ProgramDatabaseFile>", path.relative(path.absolute(symbolfile), vcxprojdir)) - end -- use c or c++ precompiled header local pcheader = target.pcxxheader or target.pcheader |
