我可以指定最低 Dub 或 DMD 版本吗?
Can I specify a min Dub or DMD version?
人们不断尝试使用旧版本的 Dmd 和 Dub(0.9.2 而不是 1.0.0)构建我的项目,但它不起作用。我可以在 dub.json 文件中指定所需的最低配音版本吗?
很遗憾,你不能。有关详细信息,请参阅 this issue。请大声喧哗 ;-)
目前有两个解决方法。
1) 在主语句中使用static if
int main()
{
static if (__VERSION__ < 2069)
{
pragma(msg, "Your DMD version is outdated. Please update");
return 1;
}
...
}
2) 使用preGenerateCommands = ['rdmd checkversions.d']
int main()
{
import std.process : execute;
import std.stdio : writeln;
auto ver = execute(["dub", "--version"]);
if (ver.status != 0)
{
writeln("Error: no dub installation found.");
}
else
{
import std.conv : to;
import std.regex : ctRegex, matchFirst;
auto ctr = ctRegex!`version ([0-9]+)[.]([0-9]+)[.]([0-9]+)`;
auto r = ver.output.matchFirst(ctr);
assert(r.length == 4, "version not found");
int major = r[1].to!int, minor = r[2].to!int, patch = r[3].to!int;
if (major < 2)
{
writeln(minor);
return 1;
}
}
}
如今 dub 允许您指定工具链要求。参见 https://dub.pm/package-format-json.html#toolchain-requirements
在 dub.json
你可以做:
{
"name": "my-package",
"toolchainRequirements": {
"dub": ">=1.14.0",
"frontend": ">=2.069",
"gdc": "no"
}
}
人们不断尝试使用旧版本的 Dmd 和 Dub(0.9.2 而不是 1.0.0)构建我的项目,但它不起作用。我可以在 dub.json 文件中指定所需的最低配音版本吗?
很遗憾,你不能。有关详细信息,请参阅 this issue。请大声喧哗 ;-)
目前有两个解决方法。
1) 在主语句中使用static if
int main()
{
static if (__VERSION__ < 2069)
{
pragma(msg, "Your DMD version is outdated. Please update");
return 1;
}
...
}
2) 使用preGenerateCommands = ['rdmd checkversions.d']
int main()
{
import std.process : execute;
import std.stdio : writeln;
auto ver = execute(["dub", "--version"]);
if (ver.status != 0)
{
writeln("Error: no dub installation found.");
}
else
{
import std.conv : to;
import std.regex : ctRegex, matchFirst;
auto ctr = ctRegex!`version ([0-9]+)[.]([0-9]+)[.]([0-9]+)`;
auto r = ver.output.matchFirst(ctr);
assert(r.length == 4, "version not found");
int major = r[1].to!int, minor = r[2].to!int, patch = r[3].to!int;
if (major < 2)
{
writeln(minor);
return 1;
}
}
}
如今 dub 允许您指定工具链要求。参见 https://dub.pm/package-format-json.html#toolchain-requirements
在 dub.json
你可以做:
{
"name": "my-package",
"toolchainRequirements": {
"dub": ">=1.14.0",
"frontend": ">=2.069",
"gdc": "no"
}
}