如何知道libstdc ++是否支持std :: regex

时间:2015-10-31 01:53:27

标签: c++ gcc cmake libstdc++

我有一个使用std :: regex的应用程序,它在我的计算机上构建并运行良好。但是,在ubuntu 14.04上,它构建但不起作用,因为std :: regex没有在旧的libstdc ++上实现。

我想#ifdef我的代码中的一些行来解决这个问题,但似乎找到了一种可靠的方法来判断libstdc ++是否支持它。

我正在使用cmake,所以如果我能够获得该库的版本,我也会很高兴(/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 - > 6019)

1 个答案:

答案 0 :(得分:3)

您可以编写一个简单的测试来检查它是否有效。首先是CMake部分:

{
    "from": 20,
    "size": 10,
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "FIELD": {
                            "value": "VALUE"
                        }
                    }
                }
            ]
        }
    }
}

然后你必须将变量HAVE_CXX_11_REGEX包含在config.h中。然后,您可以使用include(CMakePushCheckState) include(CheckCXXSourceRuns) cmake_push_check_state() set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") check_cxx_source_runs(" #include <regex> int main() { return std::regex_match(\"StackOverflow\", std::regex(\"(stack)(.*)\")); } " HAVE_CXX_11_REGEX) cmake_pop_check_state() 进行测试。