我正在测试DUB,我想用
安装derelcitsdl2"dependencies": {
"derelict-sdl2": ">=1.2.10"
}
但是当我运行它时会立即抛出运行时错误。它告诉我它找不到* .so文件。
当我构建一个跨平台项目时,我不想依赖于这样的全局系统包,这很可能是Windows上的一个问题。
是否可以使用DUB运行buildscripts?
可能看起来像这样的东西
"dependencies": {
"derelict-sdl2": ">=1.2.10"
}
"c-dependency-sdl":{
git clone sdllink && cd sdl && cmake . && make && make install clib
}
我没有在DUB网站上找到有关告诉我很可能不可能的信息。
如何为不同平台构建项目?
我需要为此编写.sh / .bat脚本吗?我如何指定本地搜索路径?
答案 0 :(得分:5)
据我所知,dub不处理非dub依赖项的安装。您可以使用systemDependencies
条目描述系统库要求,该条目将在注册表中显示,并且在链接器错误和#34;的情况下将显示,但它们不会自动安装。
您可以使用preGenerateCommands
或preBuildCommands
执行上述shell命令。我会将安装脚本放在上面描述的.sh / .bat脚本中(因此它们可用于非配音用户),然后在dub.json
中放置这样的内容:
"preGenerateCommands-posix": [ "./setup.sh" ],
"preGenerateCommands-windows": [ "./setup.bat" ]
在Linux上,我通常会假设标准搜索路径上有必要的.so
文件(或者可以通过软件包管理器安装),特别是对于像sdl这样常见的东西。
就指定搜索路径而言,我只使用lflags
:
"lflags": [ "-L./ext/sdl/lib" ] (or wherever the local libs are)
资料来源:DUB Package Format
完全披露:我实际上并没有尝试使用preGenerateCommands
,但这听起来就像你需要的那样。
答案 1 :(得分:1)
对于它的价值,我转过来解决这个问题并使用make / gmake来驱动顶层构建。这将处理C / C ++依赖项(在我的情况下安装到/ usr / local / lib和/ usr / local / include)并使用Dub构建D语言部分(在dub.json中将依赖路径引用为lflags) )。