Make:从工作目录名中提取数字(Debian打包规则)
我想要一些关于以下问题的帮助: 我有一个每天都用Launchpad的Recipes功能构建的debian软件包。版本名(以及源目录的名称)将自动生成,并包含当前版本号。我想修改debian/rules文件以提取修订号并将其传递给CMake 到目前为止,它还不起作用——似乎一个空字符串被传递给了CMake。我不知道问题是在我的make代码中还是在其他地方 规则文件: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
#!/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)))
侮辱性的明显,不是吗?:)除此之外,在空格周围使用单引号可以同时插入空格和结果字符串中的空格。这是显而易见的侮辱,不是吗?:)除此之外,在空格周围使用单引号可以同时插入空格和结果字符串中的空格。