打包C++ 11程序源的可移植方法

exa*_*exa 5 autoconf portability autotools package c++11

因此,C++ 11已经存在了一段时间,并且鉴于已经有大多数平台上都支持它的编译器,在一些真正的软件中使用它会很好 - 例如可以像便携式一样打包的软件. - 可能的包,最好提供./configure等.

因为Clang和GCC当前都需要-std = c ++ 11标志来编译c ++ 11源代码,并且两者有时都需要特定的标志才能正常工作(例如,参见如何在OSX Lion上使用clang 3.2编译C++ 11?C++ 11 Thread无法正常工作),我担心由于编译器调用错误,该软件包无法在已支持c ++ 11的某些平台上运行.

问:有没有一些标准如何正确和可移植地编译c ++ 11?例如autotools/autoconf检查或一些描述所有可能需要的选项的编译器/平台指令列表?或者情况是否来自c ++ 11标准实现当前被标记为"实验性"的事实,并且标准最终将稳定并成为默认选择,不需要使用额外的编译器标志?

谢谢

-exa

Cel*_*ino 1

我正在使用 CMake 生成 C++11 项目的 Makefile。我需要做的 CMakeLists.txt 中的唯一更改是添加以下内容:

ADD_DEFINITIONS("-std=gnu++11")
ADD_DEFINITIONS("-D_GLIBCXX_USE_C99_STDINT_TR1")
ADD_DEFINITIONS("-D_GLIBCXX_HAS_GTHREADS")
Run Code Online (Sandbox Code Playgroud)

然而,当我使用Qt时,我用新的gcc版本4.8重新编译QtSDK,并得到一个使用4.8版本中的gcc的完整mingw系统。

进行这些更改后,该项目可以在 Windows XP、Windows 7 和 32 位和 64 位 Linux 上编译和运行。我还没有在 OSX 中测试过。