Thanks!  The dependency error is fixed on Windows with the latest nightly binary.  However, this version of CMake seems to break the Boost install target.  Running "make install" results in errors from not finding libs/preprocessor/include/boost in the source tree, which does not exist.  This occurs when using both the Microsoft and Intel compiler targets, and does not occur with the Microsoft target (or the Intel target when not building shared libraries) in CMake 2.6.4.  A quick fix to get it working for me was to just manually create include/boost directories for each source library, i.e. libs/<name>:

$ cd libs/
$ for dir in `ls -d */`; do mkdir -p $dir/include/boost; done

(I don't know what I would do without Bash on Windows.)


On the Mac side of things, the build gets a little further, but now it's failing with a compiler error in Boost.Wave.  I'm using the same version of the Intel C++ Compiler on Mac and Windows, so I'm not sure why the Windows build would succeed but the Mac build would fail.  Does any part of Boost.Wave dependent on platform-specific code, in the form of #ifdef's?  It appears to be a template instantiation problem, but the same source file compiles just fine on Intel C++ on Windows, same compiler version.  I'll look into it some more; I'm not sure if it's a build issue (wrong/incomplete flags) or just an Intel compiler issue.


[ 91%] Building CXX object libs/wave/src/CMakeFiles/
boost_wave-mt-shared.dir/instantiate_re2c_lexer.cpp.o
/Users/jholewinski/libraries/boost-cmake-1.40/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp(119): error #409: "boost::wave::cpplexer::re2clex::lexer<IteratorT, PositionT>::lexer(const IteratorT &, const IteratorT &, const PositionT &, boost::wave::language_support)" provides no initializer for:
            const member "boost::wave::cpplexer::re2clex::lexer<IteratorT, PositionT>::cache"
  {
  ^
          detected during:
            instantiation of "boost::wave::cpplexer::re2clex::lex_functor<IteratorT, PositionT>::lex_functor(const IteratorT &, const IteratorT &, const PositionT &, boost::wave::language_support) [with IteratorT=char *, PositionT=boost::wave::util::file_position_type]" at line 402
            instantiation of "boost::wave::cpplexer::lex_input_interface<boost::wave::cpplexer::lex_token<PositionT>> *boost::wave::cpplexer::new_lexer_gen<IteratorT, PositionT>::new_lexer(const IteratorT &, const IteratorT &, const PositionT &, boost::wave::language_support) [with IteratorT=char *, PositionT=boost::wave::util::file_position_type]" at line 52 of "/Users/jholewinski/libraries/boost-cmake-1.40/libs/wave/src/instantiate_re2c_lexer.cpp"

compilation aborted for /Users/jholewinski/libraries/boost-cmake-1.40/libs/wave/src/instantiate_re2c_lexer.cpp (code 2)
make[2]: *** [libs/wave/src/CMakeFiles/boost_wave-mt-shared.dir/instantiate_re2c_lexer.cpp.o] Error 2
make[1]: *** [libs/wave/src/CMakeFiles/boost_wave-mt-shared.dir/all] Error 2
make: *** [all] Error 2


Thanks,

Justin Holewinski


On Thu, Oct 8, 2009 at 12:22 PM, Bill Hoffman <bill.hoffman@kitware.com> wrote:
Justin Holewinski wrote:


I have no idea why this is happening.  When using the Visual Studio toolset, the dynamic-link libraries are placed in bin/ and the import libraries are placed in lib/, like you would expect.  Why this is not the case when using the Intel compiler, I have no idea.  Perhaps there are a different set of command-line switches that are needed to set to the output directory of the import libraries.  I'll continue to look into it and let you know if I find something.

This was a bug in CMake's Intel file for windows.  I just recently checked in a fix to CVS CMake, and the fix will be in 2.8.0 when it is released.

You can find a nightly binary for CMake on windows here:

http://www.cmake.org/files/vCVS/?C=M;O=D



-Bill


_______________________________________________
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake



--

Thanks,

Justin Holewinski