[ 
https://issues.apache.org/jira/browse/THRIFT-705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907189#action_12907189
 ] 

Mina Naguib commented on THRIFT-705:
------------------------------------

By the way, this issue, indirectly, causes breakage when using thrift to 
generate code for the cassandra interface file.

It just so happens that the cassandra.thrift file declares:
const string VERSION = "2.2.0"

When thrift cpp code is generated, the cassandra_constants.h file contains:
std::string VERSION;

However, if the program that includes that file uses autotools, that file will 
get compiled with -DHAVE_CONFIG.  This will trickle down to the thrift headers 
themselves, which will then import thrift's own config.h, which has this:
#define VERSION "0.4.0"

And so, VERSION is substituted back in cassandra_constants.h, making the 
post-preprocessor output:
std::string "0.4.0";

Which is a syntax error, and will not compile.

I actually ran into this issue maintaining libcassandra (a C++/C client API) 
and had to manually tweak the generated CPP code to make it compile.

> Installed C++ header files depend on "config.h" which may have conflicting 
> macros with the (autoconf based) C++ project using Thrift.
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-705
>                 URL: https://issues.apache.org/jira/browse/THRIFT-705
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>         Environment: Any Thrift compatible C++ compiler environment.
>            Reporter: Teemu Koponen
>         Attachments: config-h-patch.diff, config_h_patch-r991496.diff
>
>
> The public, installed Thrift C++ header files depend on an autoconf generated 
> system specific  'config.h' header file. Unfortunately, having this header 
> file as a part of the library headers is generally troublesome.  For example, 
> see:
> http://sources.redhat.com/autobook/autobook/autobook_96.html
> Attached is a patch that relies on an alternative, simpler approach based on 
> AX_PREFIX_CONFIG_H, which adds a package prefix to both config.h file name 
> and to the macros defined within:
> http://www.nongnu.org/autoconf-archive/ax_prefix_config_h.html
> The resulting thrift-config.h can be installed and included safely from C++ 
> applications having their own config.h.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to