现在我在 D 中的项目有很多不同的库。是否可以静态链接它们并制作单个exe(大小不是问题)。
我应该将哪个命令传递给 DMD,或者有什么方法可以在 DUB 配置中指定它?
正如棘轮怪胎所说,您需要将依赖项本身编译为静态库。一旦您将依赖项作为静态库,您就可以将它们列在libs
条目中,dub.json
就像您将动态库一样。
它可能不是一个光辉的例子,但这是我dub.json
用来管理一个我想创建静态和动态构建的项目。我使用该configurations
部分来分隔静态和动态链接的构建。构建时,我使用--config=
标志在静态和动态构建之间进行选择。
如果您自己构建依赖项的静态库并且不想将它们放在系统的库搜索路径中,则可以使用 -L 选项lflags
来指定静态库的位置。
请注意,静态编译您的直接依赖项并不一定意味着您的项目将没有动态依赖项——它可能仍然动态链接到您的依赖项的依赖项(除非您也静态编译这些依赖项)。例如,我上面链接的项目静态链接到allegro
它的模块,但仍然动态链接到allegro
like libogg
and的依赖项libpng
(因为我没有编译它们的静态版本)。