我正在运行Ubuntu 14.04.
我重现的步骤:
创建一个新的C++项目(New - > C++ - > Hello World项目),我调用了它 TestStdThread
将主文件中的代码更改为:
#include#include int main() { std::cout << "You have " << std::thread::hardware_concurrency() << " cores." << std::endl; return 0; }
转到TestStdThread - >属性 - > C/C++构建 - >设置 - > GCC C++编译器,并将命令选项从更改g++
为g++ -std=c++11
转到TestStdThread - >属性- > C/C++编译- >设置- > GCC C++编译器- >包括添加/usr/include
到包含路径(-I) ,并添加pthread.h
到包含文件(-include)
转到TestStdThread - > Properties - > C/C++ Build - > Settings - > GCC C++ Linker - > Libraries,添加pthread
到Libraries(-l),并添加/usr/lib/x86_64-linux-gnu
到Library搜索路径(-L)
TestStdThread - > Build Project
点击"运行"
没有构建错误.Eclipse告诉我,该项目有错误并且询问我是否想要运行它,当我说是的时,输出是正确的:You have 4 cores.
.但是,Eclipse仍然std::thread::hardware_concurrency
用红色突出显示该部分,并将其报告(在悬停时),因为"函数'hardware_concurrency'无法解析",并且std::thread
在键入std::
Ctrl+ 时没有显示Space.
这是我用来查找pthread
文件所在位置的bash命令/usr
(/usr/share
省略,因为它包含了许多我不想要的doc文件):
llama@llama-Satellite-E55-A:/usr$ find -name "*pthread*" -not -path "./share/*" ./include/pthread.h ./include/x86_64-linux-gnu/bits/pthreadtypes.h ./lib/x86_64-linux-gnu/pkgconfig/pthread-stubs.pc ./lib/x86_64-linux-gnu/libpthread.so ./lib/x86_64-linux-gnu/libpthread_nonshared.a ./lib/x86_64-linux-gnu/libgpgme-pthread.so.11.11.0 ./lib/x86_64-linux-gnu/libgpgme-pthread.so.11 ./lib/x86_64-linux-gnu/libpthread.a ./lib/perl/5.18.2/bits/pthreadtypes.ph ./lib/debug/lib/x86_64-linux-gnu/libpthread-2.19.so
codestation.. 10
转到Project
- > Properties
- > C/C++ General
- > Preprocessor include paths, etc
- > Providers
- > CDT GCC Builtin Compiler Settings
并附-std=c++11
加到编译器规范.
您也可以对所有项目执行此操作Window
- > Preferences
- > C/C++
- > Build
- > Settings
- > Discovery
并附-std=c++11
加到CDT GCC Builtin Compiler Settings
规范.
确保之后重新编制项目索引.
这些说明适用于Eclipse Luna(4.4.0),对于以前的版本,路径类似.