Webtoolkit
Jump to navigation
Jump to search
Environment
# cat /etc/debian_version 6.0.6 # gcc -v gcc version 4.4.5 (Debian 4.4.5-8) # uname -r 3.2.0-0.bpo.3-amd64
Depends
apt-get install libwt-dev libwtfcgi-dev libapache2-mod-fastcgi a2enmod fastcgi
Apache config
from http://whocares.de/fastcgiexternalserver-demystified/all/1/
<IfModule mod_fastcgi.c>
FastCGIExternalServer /tmp/my_app.fastcgi -host 127.0.0.1:9000
Alias /my_app /tmp/my_app.fastcgi
</IfModule>
First Wt app
#include <Wt/WApplication>
#include <Wt/WBreak>
#include <Wt/WContainerWidget>
#include <Wt/WLineEdit>
#include <Wt/WPushButton>
#include <Wt/WText>
class HelloApplication : public Wt::WApplication
{
public:
HelloApplication(const Wt::WEnvironment& env);
private:
Wt::WLineEdit *nameEdit_;
Wt::WText *greeting_;
void greet();
};
HelloApplication::HelloApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env)
{
setTitle("Hello world");
root()->addWidget(new Wt::WText("Your name, please ? "));
nameEdit_ = new Wt::WLineEdit(root());
Wt::WPushButton *button = new Wt::WPushButton("Greet me.", root());
root()->addWidget(new Wt::WBreak());
greeting_ = new Wt::WText(root());
button->clicked().connect(this, &HelloApplication::greet);
}
void HelloApplication::greet()
{
greeting_->setText("Hello there, " + nameEdit_->text());
}
Wt::WApplication *createApplication(const Wt::WEnvironment& env)
{
return new HelloApplication(env);
}
int main(int argc, char **argv)
{
return Wt::WRun(argc, argv, &createApplication);
}
Compile
g++ -lwtfcgi -lwt my_app.cpp -o myapp
Create config file
nano wt_config.xml
<server>
<application-settings location="*">
<connector-fcgi>
<run-directory>/tmp</run-directory>
</connector-fcgi>
<debug>true</debug>
<log-file>/tmp/wt.log</log-file>
</application-settings>
</server>
Running spawned process
WT_CONFIG_XML=wt_config.xml spawn-fcgi -n -p 9000 ./myapp
See the result on http://localhost/my_app
Set-up an Eclipse CDT project =
Create an Eclipse project, maybe like there
Configure to Run and Debug
- Run -> Debug Configurations
- select 'C/C++ Application'
- click on 'New launch configuration'
- Name: "TestWt Spawned"
- C/C++ Application: "/usr/bin/spawn-fcgi"
- switch to tab 'Arguments'
- Program arguments: "-n -p 9000 build/debug/TestWt"
- Working directory: "${workspace_loc:TestWt/TestWt}"
- switch to tab 'Environment'
- click New...
- Name: "WT_CONFIG_XML"
- Value: "wt_config.xml"
- click Ok
- switch to tab 'Debugger'
- check 'Non-stop mode'
- check 'Automatically debug forked processes'
- click on Close
Now you can see the debug working, and run the page on http://localhost/my_app