Merge pull request #1809 from hannes-harnisch/inheritdependencies

Feature for disabling inherited dependencies
This commit is contained in:
Samuel Surtees 2022-02-22 22:23:39 +10:00 committed by GitHub
commit 1cd78b4a90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 79 additions and 5 deletions

View File

@ -723,7 +723,7 @@
]]
end
--
--
-- Test ignoring default libraries with extensions specified.
--
@ -737,4 +737,33 @@
<AssemblyDebug>true</AssemblyDebug>
</Link>
]]
end
end
--
-- Test for not including additional dependencies.
--
function suite.inheritDependenciesOff()
inheritdependencies "Off"
prepare()
test.capture [[
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalDependencies></AdditionalDependencies>
<ImportLibrary>bin\Debug\MyProject.lib</ImportLibrary>
</Link>
]]
end
function suite.inheritDependenciesOn()
inheritdependencies "On"
links { "kernel32" }
prepare()
test.capture [[
<Link>
<SubSystem>Windows</SubSystem>
<AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImportLibrary>bin\Debug\MyProject.lib</ImportLibrary>
</Link>
]]
end

View File

@ -1422,9 +1422,18 @@
links = vstudio.getLinks(cfg, explicit)
end
if #links > 0 then
links = path.translate(table.concat(links, ";"))
m.element("AdditionalDependencies", nil, "%s;%%(AdditionalDependencies)", links)
links = path.translate(table.concat(links, ";"))
local additional = ";%(AdditionalDependencies)"
if cfg.inheritdependencies ~= nil then
if not cfg.inheritdependencies then
additional = ""
end
end
-- If there are no links and dependencies should be inherited, the tag doesn't have to be generated.
if #links > 0 or additional == "" then
m.element("AdditionalDependencies", nil, "%s%s", links, additional)
end
end

View File

@ -644,6 +644,12 @@
tokens = true,
}
api.register {
name = "inheritdependencies",
scope = "config",
kind = "boolean",
}
api.register {
name = "icon",
scope = "project",

View File

@ -0,0 +1,29 @@
inheritdependencies
```lua
inheritdependencies "value"
```
For Visual Studio project files, this controls the generation of the `%(AdditionalDependencies)` entry in the list of libraries that a project links.
### Parameters ###
`value` one of:
* `On` - The project(s) will inherit library dependencies based on the parent project (if any) and project default settings. This is the default behavior.
* `Off` - The project(s) will not inherit any library dependencies. Only explicitly specified dependencies will be linked.
## Applies To ###
The `config` scope.
### Availability ###
Visual Studio 2015 and later.
Premake 5.0-beta2 or later.
### Examples ###
```lua
inheritdependencies "Off"
```

View File

@ -179,6 +179,7 @@ module.exports = {
'implibsuffix',
'importdirs',
'includedirs',
'inheritdependencies',
'inlinesvisibility',
'inlining',
'intrinsics',