我正在尝试在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文件或我应该做其他事情?谢谢你的帮助。
答案 0 :(得分:0)
您应该使用cmake测试来查找libtbb,它也会设置正确的变量。
github上有一个FindTBB,您可以尝试使用它。
答案 1 :(得分:0)
现在,在 TBB source 上,CMake 已集成到主分支或最新版本中。
克隆 tbb 源作为子目录,并在您的 cmake 文件中放入“add_subdirectory(tbb)”。