"在使用CMake编译时,没有命名类型" -Error

时间:2015-12-14 19:34:09

标签: cmake

当我在Eclipse中编译代码时,它运行正常。但是如果我尝试用CMake编译它,那么这个过程就会失败。它说:

  

错误:'default_random_engine'未命名类型   default_random_engine generator;

     

错误:'uniform_int_distribution'没有命名类型   uniform_int_distribution distribution;

还有一些错误,我认为这些是这两个错误的结果。

class randomInt
{
private:
    int m_max;
    default_random_engine generator;
    uniform_int_distribution<int> distribution;

public:
    randomInt(int max = 0) :
        m_max(max),
        generator(time(0)),
        distribution(0, m_max)
    {}

    int operator ()()
    {
        return distribution(generator);
    }
};



int main(int argc, char **argv)
{
    vector<int> vec(100);
    generate(vec.begin(), vec.end(), randomInt(100));

    ostream_iterator<int> streamIt(cout, ",\n");
    copy(vec.begin(), vec.end(), streamIt);

    return 0;
}

有我的CMakeLists.txt

project(TEST)

# States that CMake required version must be greater than 2.6
cmake_minimum_required(VERSION 2.8)

# Setup sources
set(TEST_SOURCES
        aufgabe2_1.cpp
        aufgabe2_2.cpp
        aufgabe2_3.cpp
        aufgabe2_4.cpp)

set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall  -std=c++11")

# Build executable
add_executable(main ${TEST_SOURCES})

1 个答案:

答案 0 :(得分:0)

这些是来自C ++标准库pseudo-random number generation的符号,但您尚未使用命名空间std限定符号,因此请使用std::default_random_engine和{{ 1}}。