For a first time I'm installing Player on system with C++ compiler (with all STL headers) and no boost installed. What I've found is this:
Scanning dependencies of target example1
[ 93%] Building CXX object examples/libplayerc++/CMakeFiles/example1.dir/example1.o
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:2:28: error: boost/signal.hpp: No such file or directory
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:3:26: error: boost/bind.hpp: No such file or directory
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc: In function 'int main(int, char**)':
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:72: error: 'bind' is not a member of 'boost'
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:78: error: 'bind' is not a member of 'boost'
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:78: error: 'ref' is not a member of 'boost'
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:79: error: 'bind' is not a member of 'boost'
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:79: error: 'ref' is not a member of 'boost'
/root/psg22/src/player-20090626/examples/libplayerc++/example1.cc:105: error: 'bind' is not a member of 'boost'
make[2]: *** [examples/libplayerc++/CMakeFiles/example1.dir/example1.o] Error 1
make[1]: *** [examples/libplayerc++/CMakeFiles/example1.dir/all] Error 2
example1 assumes that if C++ is installed, boost is installed too, which is not always the truth.
The relevant C++ examples already check for the presence of Boost before building. I would say the source of this problem lies elsewhere. The best place to start looking is to check why USE_BOOST_THREAD and USE_BOOST_SIGNALS are set.
It is very strange since build/client_libs/libplayerc++/playerc++config.h seems to be generated properly:
#ifndef __PLAYER_CPP_CONFIG_H__
#define __PLAYER_CPP_CONFIG_H__
/* #undef HAVE_BOOST_THREAD */
/* #undef HAVE_BOOST_SIGNALS */
#if defined (HAVE_BOOST_THREAD)
#define _POSIX_PTHREAD_SEMANTICS
#if !defined(_REENTRANT)
#define _REENTRANT
#endif
#endif
#endif
Then CMakeLists.txt in sources looks reasonable:
IF (BUILD_PLAYERCC_BOOST)
IF (USE_BOOST_THREAD OR USE_BOOST_SIGNALS)
PLAYERCPP_ADD_EXAMPLE (example1 example1.cc)
PLAYERCPP_ADD_EXAMPLE (example3 example3.cc)
PLAYERCPP_ADD_EXAMPLE (goto goto.cc)
PLAYERCPP_ADD_EXAMPLE (speech_cpp_client speech_cpp_client.cc)
INSTALL (FILES ${exampleBoostSrcs} DESTINATION share/${PROJECT_NAME_LOWER}/examples/libplayerc++)
ENDIF (USE_BOOST_THREAD OR USE_BOOST_SIGNALS)
IF (USE_BOOST_SIGNALS)
PLAYERCPP_ADD_EXAMPLE (example2 example2.cc)
INSTALL (FILES ${exampleBoostSigSrcs} DESTINATION share/${PROJECT_NAME_LOWER}/examples/libplayerc++)
ENDIF (USE_BOOST_SIGNALS)
ENDIF (BUILD_PLAYERCC_BOOST)
Where else should I check?
fixed by patch 2820330
I actually ran into this myself doing some Windows work a week ago, and fixed it, but wasn't able to check it in until tonight. It was the use of incorrect variables, so it was a simple fix. Thanks for the patch, but it's not needed.
Fixed in CVS HEAD. Thanks very much for the report.