在Clion IDE中使用Tbb库

时间:2017-01-13 09:53:29

标签: c++ parallel-processing cmake clion tbb

我正在尝试在Clion IDE中运行此代码。我想使用TBB库。我使用C ++ 11。

#include “tbb/blocked_range.h”
#include “tbb/parallel_for.h”

#include <vector>

const size_t SIZE = 10000000;

int main()
{
    std::vector<double> myArray(SIZE);

    tbb::parallel_for(tbb::blocked_range<size_t>(0, SIZE),
    [&myArray](const tbb::blocked_range<size_t> &r)
    {
        for (size_t i = r.begin(); i != r.end(); i++)
            Calculate(myArray[i]);
    });

    return 0;
}

来自命令行:

g++ task1.cpp -o task1 -std=c++11 -fopenmp -ltbb

这段代码非常完美。

但在Clion没有。

我认为我的CMakeLists.txt文件存在问题。

Clion告诉我的事情:

CMakeFiles/parallel.dir/main.cpp.o: In function `run':
/usr/include/tbb/parallel_reduce.h:148: undefined reference to `tbb::task_group_context::~task_group_context()'
/usr/include/tbb/parallel_reduce.h:148: undefined reference to `tbb::task_group_context::~task_group_context()'
CMakeFiles/parallel.dir/main.cpp.o:(.rodata+0xa0): undefined reference to `typeinfo for tbb::task'
CMakeFiles/parallel.dir/main.cpp.o:(.rodata+0x1c8): undefined reference to `tbb::task::note_affinity(unsigned short)'
CMakeFiles/parallel.dir/main.cpp.o: In function `tbb::task_group_context::task_group_context(tbb::task_group_context::kind_type, unsigned long)':
/usr/include/tbb/task.h:441: undefined reference to `tbb::task_group_context::init()'

...

的CMakeLists.txt

cmake_minimum_required(VERSION 3.6) 
project(parallel) 
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp -ltbb") 
set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp main.cpp) 
add_executable(parallel ${SOURCE_FILES})

如何更改我的CMakeLists.txt文件或我应该做其他事情?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您应该使用cmake测试来查找libtbb,它也会设置正确的变量。

github上有一个FindTBB,您可以尝试使用它。

答案 1 :(得分:0)

现在,在 TBB source 上,CMake 已集成到主分支或最新版本中。

克隆 tbb 源作为子目录,并在您的 cmake 文件中放入“add_subdirectory(tbb)”。