[Ros-release] Build type and optimizations on the build farm?

Austin Hendrix ahendrix at willowgarage.com
Mon Jul 22 21:10:53 UTC 2013


Most of the documentation I was reading regarding CMAKE_BUILD_TYPE
says that it should not be set by packages, and should be set by users
at configure or build time, so I was hesitant to use it for exactly
the reasons you describe.

Since setting CMAKE_BUILD_TYPE seems like a bad idea, and the packages
I'm building should have optimizations turned on regardless of whether
they're built by a user from source or on the farm, and I don't care
about the other flags that are set by the Release build type, I did a
little more digging and found that I can add the optimization flag to
my build with:

add_definitions(-O3)

Which is set for my project and all subdirectories, but shouldn't
affect other cmake packages in the same workspace.


-Austin

On Thu, Jul 18, 2013 at 11:17 AM, Tully Foote <tfoote at osrfoundation.org> wrote:
> I believe the buildfarm already runs Release.
>
> In general you don't want to set the build type from CMake that should be a
> setting of the environment so that the person building the packages can
> choose what build type they want.  It is very ugly to be required to patch
> the source of a repo to change the build type.  As we move toward supporting
> cross compilation and leveraging the out of source builds, we need to get
> better about not putting build parameters into the source.
>
> The correct place to force this setting for the debians for example is in
> the debian/rules file.
>
> Tully
>
>
> On Thu, Jul 18, 2013 at 9:24 AM, William Woodall <william at osrfoundation.org>
> wrote:
>>
>> If you set the CMAKE_BUILD_TYPE, you should do it in a already defined
>> guard:
>>
>> if(NOT DEFINED CMAKE_BUILD_TYPE)
>>   set(CMAKE_BUILD_TYPE Release)
>> endif()
>>
>> That way it can still be explicitly overridden if desired.
>>
>>
>> On Thu, Jul 18, 2013 at 12:31 AM, Ruben Smits
>> <ruben.smits at intermodalics.eu> wrote:
>>>
>>> Hi Austin,
>>>
>>>
>>> On Thu, Jul 18, 2013 at 4:25 AM, Austin Hendrix
>>> <ahendrix at willowgarage.com> wrote:
>>>>
>>>> I have a few packages containing realtime controllers that were
>>>> previously built with:
>>>> set(ROS_BUILD_TYPE Release), which among other things enabled
>>>> optimizations as part of the build process.
>>>>
>>>> Since the catkin doesn't supply a replacement for ROS_BUILD_TYPE, I've
>>>> omitted it when catkinizing packages, but I'm discovering now that
>>>> packages compiled on the build farm are not sufficiently optimized for
>>>> my use case.
>>>>
>>>> Is there a way to enable optimizations or the Release build type,
>>>> either on the farm as a whole, in bloom, or in my packages?
>>>>
>>>
>>> For plain cmake packages or catkin you can use the CMAKE_BUILD_TYPE
>>> variable which takes the exact same values as rosbuilds ROS_BUILD_TYPE
>>> variable:
>>>
>>> set(CMAKE_BUILD_TYPE Release)
>>>
>>> see http://www.cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools
>>> for more info
>>>
>>> Ruben
>>>
>>>>
>>>> -Austin
>>>> _______________________________________________
>>>> Ros-release mailing list
>>>> Ros-release at code.ros.org
>>>> https://code.ros.org/mailman/listinfo/ros-release
>>>
>>>
>>>
>>>
>>> --
>>> Ruben Smits, Phd
>>> Chief Technology Officer
>>> Intermodalics BVBA
>>> +32479511786
>>> www.intermodalics.eu
>>>
>>> _______________________________________________
>>> Ros-release mailing list
>>> Ros-release at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-release
>>>
>>
>>
>>
>> --
>> William Woodall
>> ROS Development Team
>> william at osrfoundation.org
>> http://williamjwoodall.com/
>>
>> _______________________________________________
>> Ros-release mailing list
>> Ros-release at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-release
>>
>
>
> _______________________________________________
> Ros-release mailing list
> Ros-release at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-release
>



More information about the Ros-release mailing list