Make:从工作目录名中提取数字(Debian打包规则)

Make:从工作目录名中提取数字(Debian打包规则),debian,gnu-make,deb,Debian,Gnu Make,Deb,我想要一些关于以下问题的帮助: 我有一个每天都用Launchpad的Recipes功能构建的debian软件包。版本名(以及源目录的名称)将自动生成,并包含当前版本号。我想修改debian/rules文件以提取修订号并将其传递给CMake 到目前为止,它还不起作用——似乎一个空字符串被传递给了CMake。我不知道问题是在我的make代码中还是在其他地方 规则文件: #!/usr/bin/make -f # Uncomment this to turn on verbose mode. expo

我想要一些关于以下问题的帮助:

我有一个每天都用Launchpad的Recipes功能构建的debian软件包。版本名(以及源目录的名称)将自动生成,并包含当前版本号。我想修改debian/rules文件以提取修订号并将其传递给CMake

到目前为止,它还不起作用——似乎一个空字符串被传递给了CMake。我不知道问题是在我的make代码中还是在其他地方

规则文件:

#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

%:
    dh $@ --parallel --list-missing

# Try to detect the Bazaar revision number from the directory name
ifneq ($(findstring bzr,$(PWD)),)
COMPONENTS := $(PWD)
COMPONENTSL := $(subst -,' ',COMPONENTS)
COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
BZRVER := $(filter bzr%,COMPONENTSLL)
BZRVERN := $(subst bzr,,$(BZRVER))
override_dh_auto_configure:
    dh_auto_configure -- -DRELEASE_BUILD=0 -DBZR_REVISION=$(BZRVERN)
endif
构建日志的相关部分:

make[1]: Entering directory `/build/buildd/stellarium-0.11.2~bzr5066'
dh_auto_configure -- -DRELEASE_BUILD=0 -DBZR_REVISION=
    mkdir -p obj-i686-linux-gnu
    cd obj-i686-linux-gnu
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DRELEASE_BUILD=0 -DBZR_REVISION=
完整日志如下:


有什么想法吗?

您至少在以下几行中犯了错误:

COMPONENTSL := $(subst -,' ',COMPONENTS)
COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
BZRVER := $(filter bzr%,COMPONENTSLL)
您必须对
组件xx
变量的实际值进行更改,因此它们的名称应包含在
$(…)

如果您只需要修订号(在您的示例中为5066),则可以按如下方式提取修订号:

BZR_REVISION := $(lastword $(subst ~bzr, ,$(PWD)))

您至少在以下几行中犯了错误:

COMPONENTSL := $(subst -,' ',COMPONENTS)
COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
BZRVER := $(filter bzr%,COMPONENTSLL)
您必须对
组件xx
变量的实际值进行更改,因此它们的名称应包含在
$(…)

如果您只需要修订号(在您的示例中为5066),则可以按如下方式提取修订号:

BZR_REVISION := $(lastword $(subst ~bzr, ,$(PWD)))

侮辱性的明显,不是吗?:)除此之外,在空格周围使用单引号可以同时插入空格和结果字符串中的空格。这是显而易见的侮辱,不是吗?:)除此之外,在空格周围使用单引号可以同时插入空格和结果字符串中的空格。