如果我有一个带有可选依赖项的基于DUB的项目,那么如何使它成为一些代码(无论是模块还是版本(...){...}块)只有在依赖时才会被编译被选中了?有没有办法根据依赖关系是否存在来定义版本标识符?
我已经读过关于"可选"和"默认" "依赖"的属性标记为here的标记。这允许我将依赖项定义为可选的,但如果我不能对我的代码进行版本化以反映所选择的依赖项,那么它就缺乏了解。
答案 0 :(得分:2)
也许你可以,我不确定,但似乎你可以使用这样的东西:
version(Have_name_of_dependency)
因此,如果您的可选依赖项是sdlang -d,则可以使用
Have_sdlang_d
与here
相同这是基于配音代码的this部分
答案 1 :(得分:0)
除了使用version(foo)
块并要求人们在他们的dub.sdl中使用versions: "foo"
之外,您还有另外一个选项。它很邋,,但它会起作用。
如果您的代码是模板,您可以将相关内容包装在:
中template HasVibe()
{
enum HasVibe =
is(typeof(() { import vibe.d; } ));
}
template Foo(T) if (HasVibe!())
{
// your code here
}
如果 模板,您可以将其转换为模板:
template log() if (HasVibe!())
{
import vibe.core.log : logDebug;
alias log = logDebug;
}
未经测试,但它可能会有所帮助。