小编sag*_*rgp的帖子

如何创建用于std :: chrono函数的自定义时钟?

我有一些任意的时代,比如1988年7月13日.基本上我想测量相对于此的时间.我正在考虑编写一个自定义时钟类,以便我可以编写这样的代码:

using std::chrono;
time_point<My_Clock> tp;
std::cout << duration_cast<seconds>(tp.time_since_epoch()).count() << std::endl;
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果没有,最简洁的方法是什么?

c++ c++11 c++-chrono

18
推荐指数
1
解决办法
4253
查看次数

为Raspberry Pi交叉编译C++ 11代码

我正在尝试向Raspberry Pi移植一个大型项目,该项目大量使用C++ 11特性.该项目使用CMAKE,我使用crosstool-ng进行交叉编译.我在Pi上安装了依赖项并在本地复制它们,我设法让CMAKE找到它们.一些代码正确构建并生成ARM输出.但是,大多数代码都因令人困惑的GCC输出而失败,我非常肯定与C++ 11 /模板支持有关.例如,我得到这样的错误:

  • error: 'mutex' in namespace 'std' does not name a type (有问题的文件包含<thread>,如果我还包含<mutex>,则此错误消失,而不是x86 Ubuntu的要求)

  • error: expected class-name before '{' token(前{的行是:template<typename _Res> class __basic_future : public std::__future_base)

  • error: '__result_type' does not name a type (这可能是由于上面的错误而发生的)

这些错误看起来像ARM g ++编译器不太喜欢模板.正在使用的g ++版本是arm-unknown-linux-gnueabi-g++ (crosstool-NG 1.18.0) 4.7.3 20130102 (prerelease).

谁能指出我正确的方向?

编辑:以下是其中一个文件的g ++外观ps:

arm-unknown-linux-gnueabi-g++ -DprojectCore_EXPORTS -fPIC
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/freetype2
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/glib-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/glib-2.0/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gdk-pixbuf-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gtk-2.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/cairo
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/pango-1.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/atk-1.0
-I/home/sagar/workspace/RaspberryPi/target_env/usr/local/include
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/eigen3
-I/home/sagar/workspace/RaspberryPi/target_env/usr/include/flann
-I/home/sagar/workspace/project/include -std=c++0x -Wall -Werror -Wno-deprecated -fPIC -g -O4 …
Run Code Online (Sandbox Code Playgroud)

cross-compiling raspberry-pi

11
推荐指数
1
解决办法
3017
查看次数

使用Clang的libtooling匹配#includes(或#defines)的正确方法是什么?

我正在编写一个libtooling重构工具.我有一个类,比方说Foo,在一个标题中定义foo.h.我想看看是否foo.h包含在文件中.目前,要检查是否bar.cc包含foo.h,我只是匹配使用recordDecl(hasName("Foo")).这是有效的,因为预处理class Foo { ... };后将存在于bar.ccAST 内部,如果bar.cc包含foo.h.

但是,如果,例如,bar.cc包括cat.h哪些包括,则这不起作用foo.h.我想bar.cc明确包括foo.h.

此外,我希望能够匹配#define宏.

我编写工具的方式使得这两个目标无法实现,因为我匹配的AST已经过预处理.我正在努力做甚么可能吗?我Preprocessor在Clang的Doxygen页面上找到了类参考,但我还没有找到我正在寻找的东西.

c++ clang libtooling

8
推荐指数
1
解决办法
1779
查看次数

Raspberry Pi工具链上的std :: shared_future

我正在尝试为Raspberry Pi交叉编译一个大型项目.我正在使用由crosstool-ng,gcc版本4.7.3构建的工具链.当编译看到std :: shared_future时,编译会产生阻塞.我收到此错误:

test.cpp:5:27: error: aggregate 'std::shared_future<int> xxx' has incomplete type and cannot be defined
Run Code Online (Sandbox Code Playgroud)

这是生成该错误的源文件:

#include <future>

int main()
{
  std::shared_future<int> xxx;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个相同的源文件在Rapsberry Pi本身上成功编译.这是crosstool工具链中的错误吗?有解决方法吗?如何才能成功编译?

c++ cross-compiling c++11 raspberry-pi

5
推荐指数
1
解决办法
653
查看次数

在构建CMake时使用非默认libstdc ++?

我正在尝试在RedHat 6.4上编译cmake-3.1.0-rc1。我已经在/ usr / local下构建并安装了gcc / g ++ 4.7.4,但是CMake的bootstrap步骤失败并显示以下错误:

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by $HOME/src/cmake-3.1.0-rc1/build/Bootstrap.cmk/cmake)
Run Code Online (Sandbox Code Playgroud)

的确,at的文件/usr/lib64/libstdc++.so.6不包含GLIBCXX_3.4.15,但是我不希望CMake使用该文件。我希望它使用处/usr/local/lib/libstdc++.so.6包含的GLIBCXX_3.4.15(由证明strings /usr/local/lib/libstdc++.so.6 | grep GLIBCXX)。

有没有办法让引导的CMake使用.sounder /usr/local而不是/usr/lib64?理想情况下,它将是某种环境变量或CMake标志,因为我不想修改CMake源随附的CMakeLists文件。

编辑:我弄错了路径。实际上应该是/usr/local/lib64

c++ cmake

2
推荐指数
1
解决办法
2071
查看次数