我想帮助解决以下问题:
我每天都使用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=
有什么想法吗?
答案 0 :(得分:1)
至少在这些方面你犯了一个错误:
COMPONENTSL := $(subst -,' ',COMPONENTS)
COMPONENTSLL := $(subst ~,' ',COMPONENTSL)
BZRVER := $(filter bzr%,COMPONENTSLL)
您必须对COMPONENTSXX
变量的实际值进行更改,因此应将其名称括在$(...)
中。
如果您唯一需要的是修订号(在您的示例中为5066),则可以按如下方式提取:
BZR_REVISION := $(lastword $(subst ~bzr, ,$(PWD)))