apasajja
apasajja

Reputation: 606

CppCMS tutorial: Linking template statically error: "fatal error: content.h: No such file or directory"

From http://cppcms.com/wikipp/en/page/cppcms_1x_tut_hello_templates

I'm following the tutorial and below is what I've done.

In content.h:

#include <cppcms/view.h>
#include <string>

namespace content  {
    struct message : public cppcms::base_content {
        std::string text;
    };
}

In my_skin.tmpl:

<% c++ #include "content.h" %>
<% skin my_skin %>
<% view message uses content::message %>
<% template render() %>
<html>
  <body>
    <h1><%= text %> World!</h1>
  </body>
<html>
<% end template %>
<% end view %>
<% end skin %>

Add include in hello.cpp:

#include <content.h>

Add controller in hello.cpp:

virtual void main(std::string /*url*/)
{
    content::message c;
    c.text=">>>Hello<<<";
    render("message",c);
}

When I link statically my_skin.cpp to hello.cpp by run g++ hello.cpp my_skin.cpp -o hello -lcppcms -lbooster, it give error below:

hello.cpp:1:21: fatal error: content.h: No such file or directory

I dont know why error since hello.cpp and content.h is in the same directory

Upvotes: 0

Views: 560

Answers (1)

Pradheep
Pradheep

Reputation: 3819

you have to include then using "content.h"

GCC include <> tag searches the file in the following path

/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include

reference http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html

If the file is in the same directory then you can add them using

include "fileName.h"

in which case the compiler will search in the current directory

However you can also add any path to the search path by using -L flag. example

gcc -L/path/to/library filename.cpp

Upvotes: 1

Related Questions