更改包的默认构建标志
Contents
默认构建标志
默认情况下,我们的农场使用dpkg-buildflags命令来获取在Debian/Ubuntu上构建的默认标志。这可以归结为这些旗帜:
-DCMAKE_BUILD_TYPE=None
- 根据Debian文档,这样做是为了防止CMake覆盖其他设置的标志。
-O2
- 这是Debian/Ubuntu的默认优化标志。
-DNDEBUG
- 默认情况下,我们显式地将此添加到所有包中。
为了理解我们为什么来到这里,请看看这个问题: https://github.com/ros-infrastructure/bloom/issues/327
更改构建标志
如果你想要更改只用于构建的标志,比如选择退出-DNDEBUG或选择-O3,那么你将需要在你的发布存储库中修改缺省的debian配置。
在进行此操作之前,至少要使用其他教程中的一篇来发布你的包。
你可以通过编辑debian/rules.em来更改标志。在debian发布分支中为你的包提供的文件。更改标志是在每个包和每个ROS发行版基础上完成的,所以如果你有一个包含3个包的版本存储库,那么你将需要为每个ROS发行版做3个补丁。首先克隆你的发布存储库:
$ git clone https://github.com/<your organization>/<your RELEASE repository>
注意,这是你的发布库,而不是你提交代码的上游存储库。
在克隆你的发布存储库后,更改为包和ROS发行版的分支,你希望更改以下标记:
$ cd <folder you checked it out to> $ git checkout debian/<rosdistro>/<package_name>
例如,如果你的包名是foo,而你将其更改为Indigo,那么你将执行git checkout debian/indigo/foo之类的操作。
在这个分支中会有一个叫做debian的文件夹,在那个文件夹里会有一个没有扩展的模板文件。其中一个模板将被称为rules.em。你将编辑该文件并提交更改以更改标志。
如果你想退出-DNDEBUG这是默认的,你可以删除模板中的行这样做:
# Explicitly enable -DNDEBUG, see: # https://github.com/ros-infrastructure/bloom/issues/327 export DEB_CXXFLAGS_MAINT_APPEND=-DNDEBUG
如果您想添加-O3优化标志,覆盖默认的-O2标志,然后添加到DEB_CXXFLAGS_MAINT_APPEND环境变量-O3,如下所示:
export DEB_CXXFLAGS_MAINT_APPEND=-DNDEBUG -O3
一旦你做了任何你想做的修改,然后提交你的改变和推动:
$ git commit -am <some message about how you changed the flags> $ git push
一旦你推动了这个变更,你将需要为变更发布一个新的debc-inc版本,以便将其传播到工厂。
所以,一旦你对你想要修改的每个包和ROS发行版做了修改,再运行bloom-release:
$ bloom-release -r <rosdistro> -t <rosdistro> <repository name>
这将从<package_version>-0到<package_version>-1,例如:0.1.0-0到0.1.0-1,然后打开一个新的pull请求。一旦合并,工厂将使用你的改变。
你可以通过检查构建工程使用的标记来验证你的更改是否在那里,例如debian/ros-indigo-rviz_0.11.4-1_trusty。
你的包的未来版本,例如0.1.0到0.1.1,将得到你在这里所做的补丁,但是当发布一个新的ROS发行版时,你将需要再次采取这些步骤,因为这样的补丁不会自动传播到新的ROS发行版。