首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C++11使用GTKMM构建弃用通知

使用C++11使用GTKMM构建弃用通知
EN

Stack Overflow用户
提问于 2015-09-15 13:04:53
回答 2查看 929关注 0票数 2

我试图在一个利用C++11特性的项目中使用GTKMM。问题是,显然C++11拒绝使用GTKMM所使用的语言的某些部分。

有什么方法可以在为我的代码保留有用的编译器警告的同时消除这些消息吗?

Linux上的编译器是GCC 5.2。下面是我要说的通知:

代码语言:javascript
复制
In file included from /usr/include/glibmm-2.4/glibmm/wrap.h:23:0,
                 from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:26,
                 from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:23,
                 from /usr/include/glibmm-2.4/glibmm.h:91,
                 from /usr/include/gtkmm-3.0/gtkmm.h:87,
                 from test.cpp:1:
/usr/include/glibmm-2.4/glibmm/objectbase.h:215:13: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
 static std::auto_ptr<Threads::Mutex> extra_object_base_data_mutex;
             ^
In file included from /usr/include/c++/5.2.0/memory:81:0,
                 from /usr/include/glibmm-2.4/glibmm/objectbase.h:32,
                 from /usr/include/glibmm-2.4/glibmm/wrap.h:23,
                 from /usr/include/glibmm-2.4/glibmm/containerhandle_shared.h:26,
                 from /usr/include/glibmm-2.4/glibmm/arrayhandle.h:23,
                 from /usr/include/glibmm-2.4/glibmm.h:91,
                 from /usr/include/gtkmm-3.0/gtkmm.h:87,
                 from test.cpp:1:
/usr/include/c++/5.2.0/bits/unique_ptr.h:49:28: note: declared here template<typename> class auto_ptr;

如果编译器参数有问题,下面是CMakeLists (从OpenCV项目中重用,如果文件中有错误,请告知):

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
list( APPEND CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs -libs")

project( interface )
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTKMM REQUIRED gtkmm-3.0)
include_directories(${GTKMM_INCLUDE_DIRS})
link_directories(${GTKMM_LIBRARY_DIRS})
add_definitions(${GTKMM_CFLAGS_OTHER})
add_executable( interface test.cpp )
target_link_libraries(interface ${GTKMM_LIBRARIES})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-15 13:12:03

只是一次肮脏的攻击(因为在GTKMM中使用auto_ptr可能是有问题的,因此您想向GTKMM报告一个bug );您可以使用一些诊断语用并替换

#include <gtkmm.h>

代码语言:javascript
复制
//untested code
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#include <gtkmm.h>
#pragma GCC diagnostic warning  "-Wdeprecated-declarations"

但是auto_ptr在C++11中确实不受欢迎,我不确定它是否与C++11标准库很好地结合在一起。(也许使用Qt5而不是GtkMM可能是合理的,因为GtkMM可能不会维持很长时间,但在知道看来,这似乎是个问题;否则,希望并可能有助于改进GtkMM)。

您可能还应该在测试中使用缬磨

票数 2
EN

Stack Overflow用户

发布于 2015-09-16 07:12:58

我们最近用glibmm修复了这个问题:bug.cgi?id=748630#c11

因此,为您的构建修复它的最好方法是在可能的情况下更新您的glibmm和gtkmm版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32586881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档