我正在尝试为一个 cmake 项目制作一个 Debian 包,该项目在单线程模式下需要 3 个小时才能编译。我正在尝试进行并行构建,但失败了。
我试过像这样parallel=4
在我的control
文件中设置:
#!/usr/bin/make -f
export DEB_BUILD_OPTIONS="parallel=4"
%:
dh $@ --parallel
根据上一个问题的接受答案,但我收到以下警告:
dh: warning: invalid flag in DEB_BUILD_OPTIONS: "parallel=4"
并且 debhelper 仍然调用make -j1
.
我已经根据我在网上找到的其他建议/评论等尝试了主题的变体,但DEB_BUILD_OPTIONS="-j=4"
没有DEB_BUILD_OPTIONS="-j4"
效果。我试过设置debian/compat
为10
. 结果总是invalid flag
。我怎样才能让 debhelper 尊重这个设置?
我正在 Ubuntu Focal x86_64 docker 容器中进行构建,我的版本debhelper
是12.10ubuntu1
.
您引用debian/rules 和 DEB_BUILD_OPTIONS的文档提到它也应该在较低级别映射/实现。
虽然文档给出了一个
make
例子,但在这种情况下,应该使用一个等效的例子cmake
。从另一个包的源或直接从启动板中找到模板并不难。这是
cmake
包本身的一个示例,直接在内部映射标志debian/rules
(所以仍然是 Makefile 语法):cmake*.tar.xz
来源:来自上游 cmake 每日构建的任何本机源档案- Launchpad 项目原来,我的 Makefile 语法错误。
我看到的错误消息来自此处摘录的正则表达式
dpkg
:%s
在我意识到警告中的第二个没有引号之前,我重新阅读了该正则表达式一百万次,这意味着在错误消息中:周围的引号
"parallel=4"
来自环境变量本身,而不是来自格式字符串。解决方法是改变
至
因为在设置环境变量时,
make
会保留第一个版本中的引号。当 make 进行字符串插值时,它没有实际区别,因为引号会被 shell 吃掉,但是当子进程从环境中读取值时,"
字符会被保留。让环境变量的实际值
"parallel=4"
不是parallel=4
既触发了警告,又破坏了用于解析它的正则表达式dh
(注意前导 ^):