From dbd8907ce16a0f877733ba212f27a71c907b32d8 Mon Sep 17 00:00:00 2001 From: William Woodall Date: Tue, 23 Aug 2016 14:33:38 -0700 Subject: [PATCH] compile collada_urdf with c++11 standard (redux) (#145) * compile collada_urdf with c++11 standard as the gnu-specific keyword "typeof" is used in the code, the gnu 11 standard has to be specified. cmake_minimum_required increased to have add_compile_options around. * use decltype and check for flag before passing it * disable some warnings and fix cxx flag check --- collada_urdf/CMakeLists.txt | 8 +++++++- collada_urdf/include/collada_urdf/collada_urdf.h | 7 +++++++ collada_urdf/src/collada_urdf.cpp | 8 +++++++- collada_urdf/src/urdf_to_collada.cpp | 6 ++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/collada_urdf/CMakeLists.txt b/collada_urdf/CMakeLists.txt index 524f2e9..113dee0 100644 --- a/collada_urdf/CMakeLists.txt +++ b/collada_urdf/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.3) +cmake_minimum_required(VERSION 2.8.12) project(collada_urdf) find_package(catkin REQUIRED COMPONENTS angles collada_parser resource_retriever urdf geometric_shapes tf cmake_modules) @@ -10,6 +10,12 @@ catkin_package( INCLUDE_DIRS include DEPENDS angles collada_parser resource_retriever urdf geometric_shapes tf) +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag(-std=c++11 HAS_STD_CPP11_FLAG) +if(HAS_STD_CPP11_FLAG) + add_compile_options(-std=c++11) +endif() + include_directories(include) find_package(assimp QUIET) diff --git a/collada_urdf/include/collada_urdf/collada_urdf.h b/collada_urdf/include/collada_urdf/collada_urdf.h index 2f42389..d54923d 100644 --- a/collada_urdf/include/collada_urdf/collada_urdf.h +++ b/collada_urdf/include/collada_urdf/collada_urdf.h @@ -39,7 +39,14 @@ #include #include + +#ifndef _WIN32 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include +#pragma GCC diagnostic pop +#endif + #include "urdf/model.h" namespace collada_urdf { diff --git a/collada_urdf/src/collada_urdf.cpp b/collada_urdf/src/collada_urdf.cpp index 712328e..e6bfebe 100644 --- a/collada_urdf/src/collada_urdf.cpp +++ b/collada_urdf/src/collada_urdf.cpp @@ -40,6 +40,9 @@ #include #include +#ifndef _WIN32 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include #include #include @@ -49,6 +52,9 @@ #include #include #include +#pragma GCC diagnostic pop +#endif + #include #include #include @@ -82,7 +88,7 @@ #include #include -#define FOREACH(it, v) for(typeof((v).begin())it = (v).begin(); it != (v).end(); (it)++) +#define FOREACH(it, v) for(decltype((v).begin()) it = (v).begin(); it != (v).end(); (it)++) #define FOREACHC FOREACH using namespace std; diff --git a/collada_urdf/src/urdf_to_collada.cpp b/collada_urdf/src/urdf_to_collada.cpp index 58cec49..0ab0bf9 100644 --- a/collada_urdf/src/urdf_to_collada.cpp +++ b/collada_urdf/src/urdf_to_collada.cpp @@ -34,7 +34,13 @@ /* Author: Tim Field */ +#ifndef _WIN32 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #include "collada_urdf/collada_urdf.h" +#pragma GCC diagnostic pop +#endif + #include int main(int argc, char** argv)