dub的sdl配置文件中文帮助
DUB软件包根文件夹应包含有构建/部署元信息
的dub.sdl(或dub.json)
文件.忽略未知设置.
简单示例:
//dub.sdl可包含注释,请尽量简洁!
name "我的"
description "示例"
authors "呀"
homepage "http://myproject.example.com"
license "mit"
dependency "vibe-d" version="~>0.7.23"
全局设置
构建设置
,也可在此用.
名字 | 参数 | 描述 |
---|---|---|
name[必填]
|
“<name>” |
包名,_- +英文字母
|
description[发布时必填]
|
“<text>” | 简要介绍 |
toolchainRequirements
|
<requirement1>[<requirement2> […]] | DUB,编译器和语言前端要求 |
homepage
|
“<url>” | 主页 |
authors
|
“<author1>” ["<author2>" […]] | 作者列表 |
copyright
|
“<text>” | 版权 |
license[发布时必填]
|
“<license spec>” | 许可 |
subPackage
|
"<path>"或{ … } |
子包,用路径/原位 ,见子包
|
configuration
|
“<name>” { … } |
指定构建配置,用--config=... ,见配置.
|
buildType
|
“<name>” { … } |
定义构建类型 可覆盖/指定,用--build=...
|
x:ddoxFilterArgs
|
“<arg1>” ["<arg2>" […]] |
实验 ,对--build=ddox的控制过滤行为 可用的命令行标识列表
|
子包
除了主包,还可设置子包,主包:子包
即可.典型的,将一个库分成几个子包.如主目录下dub.sdl
为:
name "mylib"
targetType "none"
dependency "mylib:component1" version="*"
dependency "mylib:component2" version="*"
subPackage "./component1/"
subPackage "./component2/"
//不用直接分成不同仓库
在组件1
里的dub.sdl
里面是:
name "component1"
targetType "library"
组件1
与组件2
可像普通包
一样,外部项目可像"mylib:component1"和"mylib:component2"
引用.用*
版本标识库指向同一库的子库.
name "mylib"
targetType "none"
dependency "mylib:component1" version="*"
//见上行
subPackage {name "component1"targetType "library"sourcePaths "component1/source"importPaths "component1/source"
}
dub.sdl
中这样声明子包.不建议在根目录
下定义子包
,会导致隐藏依赖
而在sdl
文件中未声明.
许可
目前支持:公共领域
,AFL-3.0
(学术自由许可3.0),AGPL-3.0
(Affero GNU 公共许可 3.0),Apache-2.0
,APSL-2.0
(苹果公共源许可),Artistic-2.0
,BSL-1.0
(Boost 软件许可),BSD 2-clause
,BSD 3-clause
,EPL-1.0
(Eclipse 公共许可),GPL-2.0
,GPL-3.0
,ISC
,LGPL-2.1
,LGPL-3.0
,MIT
,MPL-2.0
(Mozilla 公共许可 2.0),MS-PL
(微软公共许可),MS-RL
(微软相互许可),NCSA
(Illinois大学/NCSA开源许可),OpenSSL
(OpenSSL许可),SLeay
(SSLeay许可),Zlib
(zlib/libpng许可),其余不支持.如:
//这是人家的示例
"GPL-3.0"
"GPL-2.0 or later"
"GPL-2.0 or later or proprietary"
"GPL-2.0 or LGPL-3.0"
"LGPL-2.1 or proprietary"
构建配置
影响传给编译器/链接器
的命令行选项,都是可选
的.
名 | 参数 | 描述 |
---|---|---|
dependency
|
“<name>” … |
添加单个依赖项,属性用来配置要用的版本/路径 ,用多个 本项来表示多个依赖 ,不支持平台
|
systemDependencies
|
“<text>” |
系统依赖,如C库,注册表上可见,链接错误时显示,不支持平台
|
targetType
|
“<type>” |
目标类型.不支持平台
|
targetName
|
“<name>” |
输出名,自动添加前后缀,不支持平台
|
targetPath
|
“<path>” |
二进制目标路径,不支持平台
|
workingDirectory
|
“<path>” |
固定工作目录,从中运行生成二进制,不支持平台
|
subConfiguration
|
“<dependency>” “<configuration>” |
锁定依赖项(第一个)到特定配置(第二个),不支持平台
|
buildRequirements
|
“<requirement1>” ["<requirement2>" […]] | 构建要求配置列表 |
buildOptions
|
“<option1>” ["<option2>" […]] | 编译器相关构建选项标识符列表 |
libs
|
“<lib1>” ["<lib2>" […]] |
外部库名,根据编译器转换成适当的链接标志,如(ssl->-L-lssl ).
|
sourceFiles
|
“<pattern1>” ["<pattern2>" […]] | 给编译器的其他源文件,一般源目录外添加依赖配置的额外源文件 |
sourcePaths
|
“<path1>” ["<path2>" […]] |
自定义源路径,无则source/src ,通常还要定义importPaths ,因为sourcePaths 不影响他们.
|
excludedSourceFiles
|
“<pattern1>” ["<pattern2>" […]] |
排除文件,比"sourceFiles"和"sourcePaths" 优先.可用通配符 .
|
mainSourceFile
|
“<path>” |
含main() 文件,用于dub test 用来区分要测试文件.不支持平台
|
copyFiles
|
“<pattern1>” ["<pattern2>" […]] |
复制通配符模式 文件到targetPath ,递归复制.
|
versions
|
“<version1>” ["<version2>" […]] | D版本列表 |
debugVersions
|
“<version1>” ["<version2>" […]] | D调试标识符列表 |
importPaths
|
“<path1>” ["<path2>" […]] |
D模块导入路径,默认为source/
|
stringImportPaths
|
“<path1>” ["<path2>" […]] |
串导入路径,默认为view/ ,
|
preGenerateCommands
|
“<cmd1>” ["<cmd2>" […]] |
生成命令前命令列表
|
postGenerateCommands
|
“<cmd1>” ["<cmd2>" […]] |
生成命令后命令列表
|
preBuildCommands
|
“<cmd1>” ["<cmd2>" […]] |
构建命令前命令列表
|
postBuildCommands
|
“<cmd1>” ["<cmd2>" […]] |
构建命令后命令列表
|
preRunCommands
|
“<cmd1>” ["<cmd2>" […]] |
运行命令前命令列表
|
postRunCommands
|
“<cmd1>” ["<cmd2>" […]] |
运行命令后命令列表
|
dflags
|
“<flag1>” ["<flag2>" […]] |
传递给D编译器 的额外标志,与编译器相关,但一些能自动从dmd 转换成目标编译器标志.
|
lflags
|
“<flag1>” ["<flag2>" […]] |
传递给链接器 的标志,注意与特定链接器相关.
|
平台相关
用platform
属性指定.包含-
号连接的操作系统/体系结构/编译器标识符列表
.预定义的在此且均为小写
,顺序为操系-架构-编译器
,且都可省略
.示例:
//所有平台
versions "PrintfDebugging"
//仅dmd编译
dflags "-vtls" platform="dmd"
//仅"X86-64"
versions "UseAmd64Impl" platform="x86_64"
//仅"Posix systems"(Linux, OS X, FreeBSD等.)
libs "ssl" "crypto" platform="posix"
//"Windows, X86-64且用DMD编译"
sourceFiles "lib/win32/mylib.lib" platform="windows-x86_64-dmd"
版本限定
用version
属性.如version="<version-specifier>"
.
当不存在path
或期望与旧版本(<0.9.22
)兼容时,这样限定
path="包路径"
,从文件夹找包.引用特定路径中包
,当要用特定包
时这样用.如git子模块
或主包的子目录
(如示例工程
).
optional=true
,表示可选依赖.为真
时,在dub.selections.json
中显式选择时才用该依赖
,省略时,默认为假
.以前<0.9.25版本意思不一样
,表示仅在
本地机器可用时,选择可选依赖
.
default=true
,默认选择可选依赖.未设置时,该属性默认为假
,如为真
,无dub.selections.json
时选择依赖
.仅在上行的可选为真
时有用.<0.9.25
将忽略本项.
版本限定意思:
次版本:"~>2.2.13"等价于">=2.2.13 <2.3.0"
主版本:"~>2.2"等价于">=2.2.0 <3.0.0"
特定版本:"==1.3.0"
最小版本:">=1.3.0"
版本区间:">=1.3.0 <=1.3.4"
任意版本:">=0.0.0"," * "
git分支(过时):"~master"
建议用~>
在灵活升级/减少破坏
间取得平衡,相同仓库下的子包
用*(任意)
.
目标类型
值 | 描述 |
---|---|
"autodetect"
|
默认全局值,尝试生成exe|库 配置,配置块中不允许 该值,用其他值会限定为生成的配置中的一个 .
|
"none"
|
不生成输出文件,在用依赖 引入其他包时有用.
|
"executable"
|
exe 可执行
|
"library"
|
库,不限制库类型
|
"sourceLibrary"
|
不生成exe ,但强制按依赖项目 把所有源文件加至编译器调用中
|
"staticLibrary"
|
静态库 |
"dynamicLibrary"
|
动态库 |
构建要求
以下值按数组
对待
值 | 描述 |
---|---|
"allowWarnings"
|
警告不中止编译 |
"silenceWarnings"
|
不显示警告 |
"disallowDeprecations"
|
过时时中断编译 |
"silenceDeprecations"
|
不显示过时 |
"disallowInlining"
|
禁止内联,释放 版本也禁止.
|
"disallowOptimization"
|
禁止优化,释放 版本也禁止.
|
"requireBoundsCheck"
|
总是检查边界 |
"requireContracts"
|
释放 版本也保留断言/合约
|
"relaxProperties"
|
过时 ,不强制严格属性处理
|
"noDefaultFlags"
|
不产生构建类型 相关标志(如-debug,-cov,-unittest ),禁止用于释放 版本,完全作为开发/调试 工具,可试试-build=plain .
|
构建选项
编译器无关的方式来指定常见编译器选项/标志
.许多由构建要求
管理,其余仅在构建类型
块上出现.
值 | 描述 | dmd标志 |
---|---|---|
"debugMode"
|
(启用合约)按调试编译 |
-debug
|
"releaseMode"
|
(禁止断言/检查边界)释放编译 |
-release
|
"coverage"
|
启用代码覆盖率分析 |
-cov
|
"debugInfo"
|
启用符号调试信息 |
-g
|
"debugInfoC"
|
按C兼容格式启用符号调试信息 |
-gc
|
"alwaysStackFrame"
|
始终生成堆栈帧 |
-gs
|
"stackStomping"
|
踩栈 |
-gx
|
"inline"
|
内联函数 |
-inline
|
"noBoundsCheck"
|
禁用检查边界 |
-boundscheck=off
|
"optimize"
|
优化 |
-O
|
"profile"
|
概要分析 |
-profile
|
"profileGC"
|
垃集概要分析 |
-profile=gc
|
"unittests"
|
编译单元测试 |
-unittest
|
"verbose"
|
详细输出 |
-v
|
"ignoreUnknownPragmas"
|
编译时忽略未知指示 |
-ignore
|
"syntaxOnly"
|
不生成目标文件 |
-o-
|
"warnings"
|
启用警告,默认启用(用构建要求 来控制)
|
-wi
|
"warningsAsErrors"
|
警告当作错误,(用…控制) |
-w
|
"ignoreDeprecations"
|
不警告过时,(…) |
-d
|
"deprecationWarnings"
|
警告过时,(…) |
-dw
|
"deprecationErrors"
|
过时当作错误,(…) |
-de
|
"property"
|
强制属性语法,已过时
|
-property
|
"betterC"
|
按betterC 模式编译
|
-betterC
|
环境变量
$变量
,用$$
表$
.
变量 | 内容 |
---|---|
$PACKAGE_DIR
|
包目录 |
$ROOT_PACKAGE_DIR
|
构建依赖树的根包路径 |
$<name>_PACKAGE_DIR
|
特定程序包依赖图路径,$<name> 大写,且无版本 串
|
$DUB
|
DUB路径
|
$ARCH
|
CPU架构 : “x86”, “x86_64”
|
$PLATFORM
|
运行平台 : “linux”, “windows”, …
|
$PLATFORM_POSIX
|
运行平台 : “posix”, “windows”, …
|
$BUILD_TYPE
|
构建类型 : “debug”, “release”, …
|
自定义指令,预定义变量
变量 | 内容 |
---|---|
$DUB_PACKAGE
|
包名 |
$DUB_PACKAGE_VERSION
|
包版本 |
$DUB_ROOT_PACKAGE
|
根包名 |
$DUB_ROOT_PACKAGE_TARGET_TYPE
|
根包的"targetType"
|
$DUB_ROOT_PACKAGE_TARGET_PATH
|
根包"targetPath"
|
$DUB_ROOT_PACKAGE_TARGET_NAME
|
根包"targetName"
|
$DFLAGS
|
"dflags" 内容
|
$LFLAGS
|
"lflags" 内容
|
$VERSIONS
|
"versions" 内容
|
$LIBS
|
"libs" 内容
|
$IMPORT_PATHS
|
"importPaths" 内容
|
$STRING_IMPORT_PATHS
|
"stringImportPaths" 内容
|
$DC
|
编译器名(如"../dmd"或"ldc2" )
|
$DC_BASE
|
编译器基名(如"dmd"或"ldc" )
|
$D_FRONTEND_VER
|
前端版本,2.072.2 为"2072"
|
$DUB_EXE
|
DUB路径 |
$DUB_PLATFORM
|
目标平台(如"windows"或"linux" )
|
$DUB_ARCH
|
目标架构名(如"x86"或"x86_64" )
|
$DUB_TARGET_TYPE
|
"targetType" 内容
|
$DUB_TARGET_PATH
|
"targetPath" 内容
|
$DUB_TARGET_NAME
|
"targetName" 内容
|
$DUB_WORKING_DIRECTORY
|
工作目录 |
$DUB_MAIN_SOURCE_FILE
|
"mainSourceFile" 内容
|
$DUB_CONFIG
|
已选构建配置(如"application"或"library" )
|
$DUB_BUILD_TYPE
|
已选构建类型(如"debug"或"unittest" )
|
$DUB_BUILD_MODE
|
已选构建模式(如"separate"或"singleFile" )
|
$DUB_COMBINED
|
用了--combined 则为真,否则为空
|
$DUB_RUN
|
调用了"run" 命令,则为真,否则为空
|
$DUB_FORCE
|
调用了--force ,则为真,否则为空
|
$DUB_RDMD
|
调用了--rdmd ,则为真,否则为空
|
$DUB_TEMP_BUILD
|
调用了--temp-build ,则为真,否则为空
|
$DUB_PARALLEL_BUILD
|
调用了--parallel ,则为真,否则为空
|
$DUB_RUN_ARGS
|
包含按匹配壳格式传递给生成exe 的参数
|
配置
除了平台相关,还可定义构建配置,用来加/覆盖
全局构建设置.用dub --config=<name>
选一个.默认自动选目标类型/平台
匹配的第一个配置.通过加配置(configuration)
指令来定义.
如未指定配置,则dub
选择默认的"application"和"library"
配置.仅当找到以下中的一个时,才加应用
配置:
source/app.d,source/main.d,source/<包名>/app.d,source/<包名>/main.d,src/app.d,src/main.d,src/<包名>/app.d,src/<包名>/main.d
,这些地方应仅包含程序入口点(main)
,并仅加至应用
配置.
unittest
有点特殊,其表明,如存在这个配置,则在dub test
时使用它.可以通过unittest
构建类型假定有这个配置.自定义
单元测试配置覆盖默认的排除主源文件
,或增加包含
不需要在应用/库
模式下编译的额外外部测试的模块
,(自定义嘛,灵活性大).
当定义配置平台时,可随意组合构建设置
里面的项.如示例:
...
name "somepackage"
configuration "metro-app" {platforms "windows"targetType "executable"versions "MetroApp"libs "d3d11"
}//仅窗口
configuration "desktop-app" {platforms "windows"targetType "executable"versions "DesktopApp"libs "d3d9"
}//仅窗口
configuration "glut-app" {//任意平台targetType "executable"versions "GlutApp"
}
可用subConfiguration
对特定依赖选特定配置
...
dependency "somepackage" version=">=1.0.0"
subConfiguration "somepackage" "glut-app"
未指定,则用匹配当前平台
的第一个.
配置块相关设置
名 | 参数 | 描述 |
---|---|---|
platforms
|
<spec1> ["<spec2>" […]] |
应用平台相关,见上平台限定 .
|
构建类型
dub build --build=<name>
指定,以下是预定义
.
名 | 构建选项 |
---|---|
plain
|
普通
|
debug
|
"debugMode" "debugInfo"
|
release
|
"releaseMode" "optimize" "inline"
|
release-debug
|
"releaseMode" "optimize" "inline" "debugInfo"
|
release-nobounds
|
"releaseMode" "optimize" "inline" "noBoundsCheck"
|
unittest
|
"unittests" "debugMode" "debugInfo"
|
docs
|
"syntaxOnly" ,+ dflags "-c" "-Dddocs"
|
ddox
|
"syntaxOnly" ,+ dflags "-c" "-Df__dummy.html" "-Xfdocs.json"
|
profile
|
"profile" "optimize" "inline" "debugInfo"
|
profile-gc
|
"profileGC" , "debugInfo"
|
cov
|
"coverage" "debugInfo"
|
unittest-cov
|
"unittests" "coverage" "debugMode" "debugInfo"
|
syntax
|
"syntaxOnly"
|
可自定义已有构建类型,并用全局buildType
指令加新构建类型
.低级构建设置
里面除了"dependencies", "targetType", "targetName", "targetPath", "workingDirectory", "subConfigurations"
,都可用.在此指定的构建设置稍后由包/配置
相关设置来修改/增强
.
覆盖debug
并定义新debug-profile
类型的构建类型示例如下:
name "my-package"
buildType "debug" {buildOptions "debugMode" "debugInfo" "optimize"
}
buildType "debug-profile" {buildOptions "debugMode" "debugInfo" "profile"
}
工具链要求
包可以指定工具链要求的版本
,均由版本依赖符
指定.
包中对编译器用no
而不是要求的版本
来禁止使用特定编译器
,如dmd="no"
.
标识符 | 描述 |
---|---|
"dub"
|
DUB版本 |
"frontend"
|
D前端版本 |
"dmd"
|
DMD版本 |
"ldc"
|
LDC版本 |
"gdc"
|
GDC版本 |
示例:
toolchainRequirements dub=">=1.14.0" frontend=">=2.068 <2.087"
//前端在这个区间,
toolchainRequirements dmd="no" gdc="no" ldc=">=1.11.0"
//no表禁止相应编译器
dub的sdl配置文件中文帮助相关推荐
- mangos新手教程 - 服务器配置文件中文说明
mangos新手教程 - 服务器配置文件中文说明 2008-10-28 23:27 # MaNGOS Configuration file 服务器配置文件中文说明 ConfVersion=200707 ...
- php.ini配置文件中文详细解释
php.ini配置文件中文详细解释 ;;;;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; ; 此配置针对开发目的,并且*不是*针对生产环境 ...
- GowLom2 战神引擎传奇手游Mir200\Envir 目录主要配置文件中文翻译大全
GowLom2 战神引擎传奇手游Mir200\Envir 目录主要配置文件中文翻译大全 mapinfo.txt:地图配置文件 AdminList.txt: GM 号配置文件 FlyPoint.txt: ...
- IDEA 解决配置文件中文乱码
IDEA 解决配置文件中文乱码 一.前言 开发中使用设计模式.JDBC操作数据库.Spring等都会接触到配置文件,那么配置文件中存储中文会遇到乱码情况,该如何解决那? 二.解决乱码 配置文件乱码展示 ...
- 解决Spring项目读取配置文件中文乱码问题
解决Spring项目读取配置文件中文乱码问题 properties配置文件读取时中文乱码,错误如下: 解决方法如下: **1.**打开IDEA的设置项,进入Editor->File encodi ...
- Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码
Idea 设置编码UTF-8 Idea中 .properties 配置文件中文乱码 一.设置编码 1.步骤: File -> Setting -> Editor -> File en ...
- SpringBoot application.properties读取属性配置文件中文显示为乱码问题的解决
在Spring Boot项目的application.properties中写中文的配置文件,在本地IDEA中取出来是好的,但是已jar的形式发布,再访问时发现是乱码了. 后来自己在网上搜解决办法,网 ...
- spring中@Value读取.properties配置文件中文乱码问题
spring中读取.properties文件中文乱码原因是因为springmvc或spring配置文件加载配置文件时没有设定字符集编码问题导致的,其默认是会将.properties配置文件转码为uni ...
- Nginx配置文件中文详解
######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数,建议设置为等于CPU总核心数. worker_pr ...
- Java读取配置文件中文乱码的问题
首先,这里写一下我读取配置文件的方式.大家可以用以下方式读取配置文件: String fileName = "evaluation.properties";props = new ...
最新文章
- 2020浙江9月计算机等级考试,浙江2020年9月计算机等级报考具体流程
- 浅析网站优化的站长们应该怎样安排自己的工作内容呢?
- 这回真的是挤时间了-PHP基础(三)
- 关于代码运行时间Stopwatch的使用
- bzoj3192: [JLOI2013]删除物品(树状数组)
- lambda 使用_如何使用Lambda和API网关构建API
- 颜宁:女性科学家如何更好的搞科研?
- 宏基因组 微生物组 微生物生态领域杂志简介及最新影响因子
- 前端面试之浏览器安全
- coreos mysql_CoreOS 实战:在 UOS上体验CoreOS 操作全记录
- unity 安卓接入科大讯飞 语音合成
- Contos7 postfix dovecot及postfixAdmin Roundcube整合配置
- 中继器做表格--普通表格
- 前端怎么加粗字体_安卓平板要怎么像ipad一样自由制作电子手帐
- Spring事务管理理解
- 最新尚硅谷Java MyBatisPlus教程(完整)
- php实现微信公众号生成淘宝客推广海报(正则匹配淘宝联盟)
- Kubernetes Dashboard搭建流程
- ArcGIS Pro基于遥感影像使用深度学习地物识别评估植被健康情况(教程)
- 关于ajax调用后台接口无效并且刷新页面的问题
热门文章
- 【python】99 Bottles Of Beer
- 【多线程】多线程到底是个甚——多线程初阶(复习自用)
- Apache shiro 官方API (中文版)(承蒙大佬们看重 小弟整理了下 无需积分 编辑的不好 希望帮到你们)
- 树莓派4B:连接windows远程桌面
- Infor SyteLine ERP 报告设置
- Eclipse详细设置护眼背景色和字体(Hermit)颜色并导出
- 星际蜗牛8盘位装机记录 蜗牛C双全 益衡7030电源
- 《C++ Primer Plus》学习笔记——共用体union
- ecu的c语言编程,ecu中的程序是如何编写的
- Mathematica 取整函数