= 更改包的默认构建标志 = <<TOC(4)>> == 默认构建标志 == 默认情况下,我们的农场使用`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发行版。