You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by Rares Vernica <rv...@gmail.com> on 2021/09/23 22:59:09 UTC

Custom Boost location not used by Makefile

Hi,

I'm trying to compile Thrift 0.12.0 on a CentOS 7 system with a custom
Boost location. I configure it like this:

./configure --prefix=/opt/apache-thrift --enable-shared=no
--enable-tests=no --enable-tutorial=no --with-qt4=no --with-c_glib=no
--with-java=no --with-python=no --with-haskell=no --with-cpp=yes
--enable-static=yes --with-libevent=no --with-boost=/opt/3rdparty/boost

Configure seems to be picking up the custom location OK and sets up the C++
libraries for compilation:

thrift 0.12.0

Building C++ Library ......... : yes
...

C++ Library:
   C++ compiler .............. : g++ -std=c++11
   Build TZlibTransport ...... : yes
   Build TNonblockingServer .. :
   Build TQTcpServer (Qt4) ... : no
   Build TQTcpServer (Qt5) ... : no
   C++ compiler version ...... : g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)

The include path flags seems to be set correctly:

# grep 3rdparty -R compiler/cpp | grep include
compiler/cpp/test/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include
compiler/cpp/src/thrift/plugin/Makefile:BOOST_CPPFLAGS =
-I/opt/3rdparty/boost/include
compiler/cpp/src/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include
compiler/cpp/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include

But still, they don't seem to be actually used to compile the source code:

> make
...
g++ -std=c++11 -DHAVE_CONFIG_H -I. -I../.. -I../../lib/cpp/src/thrift
-I../../lib/c_glib/src/thrift  -I./src   -Wall -Wextra -pedantic -Werror -g
-O2 -MT src/thrift/generate/thrift-t_cl_generator.o -MD -MP -MF
src/thrift/generate/.deps/thrift-t_cl_generator.Tpo -c -o
src/thrift/generate/thrift-t_cl_generator.o `test -f
'src/thrift/generate/t_cl_generator.cc' || echo
'./'`src/thrift/generate/t_cl_generator.cc
src/thrift/generate/t_cl_generator.cc:29:31: fatal error:
boost/tokenizer.hpp: No such file or directory
 #include <boost/tokenizer.hpp>
                               ^
compilation terminated.
make[3]: *** [src/thrift/generate/thrift-t_cl_generator.o] Error 1

Notice that the BOOST_CPPFLAGS value is not included in the g++ command.
The missed file is available at the location provided to configure:

# ls /opt/3rdparty/boost/include/boost/tokenizer.hpp
/opt/3rdparty/boost/include/boost/tokenizer.hpp

Is there something missing?

Thanks,
Rares

Re: Custom Boost location not used by Makefile

Posted by Mario Emmenlauer <ma...@emmenlauer.de>.
Dear Rares,

On 24/09/2021 00:59, Rares Vernica wrote:
> Hi,
> 
> I'm trying to compile Thrift 0.12.0 on a CentOS 7 system with a custom
> Boost location. I configure it like this:

just to ask this, you do need this older version of thrift, and not the
newest with cmake? Some things will be easier with cmake as its just
more modern and in some aspects more flexible.

If you do want to use automake, did you try overriding CFLAGS, CXXFLAGS,
CPPFLAGS and LDFLAGS? It looks a bit ugly at first, but it is a very
standard way to pass additional compile settings. Something lik

export CPPFLAGS="-I/opt/3rdparty/boost/include"
export LDFLAGS="-L/opt/3rdparty/boost/lib"
./configure ...

may work perfectly well?

All the best,

     Mario


> ./configure --prefix=/opt/apache-thrift --enable-shared=no
> --enable-tests=no --enable-tutorial=no --with-qt4=no --with-c_glib=no
> --with-java=no --with-python=no --with-haskell=no --with-cpp=yes
> --enable-static=yes --with-libevent=no --with-boost=/opt/3rdparty/boost
> 
> Configure seems to be picking up the custom location OK and sets up the C++
> libraries for compilation:
> 
> thrift 0.12.0
> 
> Building C++ Library ......... : yes
> ...
> 
> C++ Library:
>     C++ compiler .............. : g++ -std=c++11
>     Build TZlibTransport ...... : yes
>     Build TNonblockingServer .. :
>     Build TQTcpServer (Qt4) ... : no
>     Build TQTcpServer (Qt5) ... : no
>     C++ compiler version ...... : g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
> 
> The include path flags seems to be set correctly:
> 
> # grep 3rdparty -R compiler/cpp | grep include
> compiler/cpp/test/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include
> compiler/cpp/src/thrift/plugin/Makefile:BOOST_CPPFLAGS =
> -I/opt/3rdparty/boost/include
> compiler/cpp/src/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include
> compiler/cpp/Makefile:BOOST_CPPFLAGS = -I/opt/3rdparty/boost/include
> 
> But still, they don't seem to be actually used to compile the source code:
> 
>> make
> ...
> g++ -std=c++11 -DHAVE_CONFIG_H -I. -I../.. -I../../lib/cpp/src/thrift
> -I../../lib/c_glib/src/thrift  -I./src   -Wall -Wextra -pedantic -Werror -g
> -O2 -MT src/thrift/generate/thrift-t_cl_generator.o -MD -MP -MF
> src/thrift/generate/.deps/thrift-t_cl_generator.Tpo -c -o
> src/thrift/generate/thrift-t_cl_generator.o `test -f
> 'src/thrift/generate/t_cl_generator.cc' || echo
> './'`src/thrift/generate/t_cl_generator.cc
> src/thrift/generate/t_cl_generator.cc:29:31: fatal error:
> boost/tokenizer.hpp: No such file or directory
>   #include <boost/tokenizer.hpp>
>                                 ^
> compilation terminated.
> make[3]: *** [src/thrift/generate/thrift-t_cl_generator.o] Error 1
> 
> Notice that the BOOST_CPPFLAGS value is not included in the g++ command.
> The missed file is available at the location provided to configure:
> 
> # ls /opt/3rdparty/boost/include/boost/tokenizer.hpp
> /opt/3rdparty/boost/include/boost/tokenizer.hpp
> 
> Is there something missing?
> 
> Thanks,
> Rares
>