Reputation: 235
I want to execute a following code.
#include <iostream>
#include <thread>
void output() {
std::cout << "Hello World" << std::endl;
}
int main()
{
std::thread t(output);
t.join();
return 0;
}
I can't execute it.
Qt Creator outputs terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted
However I can execute on the terminal using the option of -pthread. Could you tell me how to use the option of -pthread in Qt Creator?
My developing environment is Ubuntu(12.04), g++4.6.3, Qt Creator(2.4.1).
Thank you.
Upvotes: 17
Views: 30134
Reputation: 34608
You also need to link against -pthread
. If you use g++ main.cpp -std=c++0x -pthread
you are doing all that in one step, so it works correctly. To make Qt do the correct things, add the following to your project file:
QMAKE_CXXFLAGS += -std=c++0x -pthread
LIBS += -pthread
Upvotes: 32
Reputation: 68698
This works for me:
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += test.cpp
QMAKE_CXXFLAGS += -std=gnu++0x -pthread
QMAKE_CFLAGS += -std=gnu++0x -pthread
Your example compiles and executes correctly with the above .pro file on my system.
Try save your example as test.cpp, and the above as project.pro in same directory. Then type:
$ qmake
$ make
$ ./project
Hello World
Upvotes: 4
Reputation: 12832
Add your command line arguments here: http://doc.qt.nokia.com/qtcreator-2.4/creator-run-settings.html
Upvotes: 0