Boost logo

Boost-Build :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2007-10-12 16:33:26


On 10/12/07 13:54, Bill Hoffman wrote:
> Larry Evans wrote:
>> On 10/05/07 16:17, David Abrahams wrote:
>> > on Fri Oct 05 2007, Larry Evans <cppljevans-AT-cox-internet.com>
wrote:
>> >
>> >> Dave, because I was having trouble with BB, I tried CMake briefly
>> >> around August. It was hard to specify a different compiler, as
>> >> described here:
>> >>
>> >> http://lists.boost.org/Archives/boost/2007/08/126117.php
>> >>
>> >> I guess this qualifies as "empirical data".
>> >
>> > Yes, it does, thanks.
>> >
>> >> After that CMake experience, I went back to BB to see if I could
>> >> understand it (in particular the extending) better. I'm still
>> >> trying :(.
>>
>> BTW, I've made some progress in getting BB to work on the problem,
>> which was emulating the GMCPPOT (see below).
>>
> OK, so that was a very long email. :-)

Sorry. I probably sould have shortened it, but it took me so long to
write :(, I just didn't have the heart to shorten it.

>
> Can we sum it up into the following three issues?
>
> 1. Once you configure a binary tree for a build with CMake,
> it is not easy to change the compiler.

Yep.

>
> 2. You want to pass flags to the compiler like -E, but cmake does not
> allow this.

I didn't mean this. The mention of using -E was only meant to show I
used it to debug c++ macros, and that a similar feature would be
useful w.r.t. cmake macros. Sorry I wasn't clear. However, I tested
this, and indeed you're right. I tried:

#!/bin/bash
cmake -DCMAKE_CXX_COMPILER=/home/evansl/download/gcc/\
4.3-20071005/install/bin/g++\
   -std=gnu++0x\
   -I/home/evansl/prog_dev/boost-cvs/ro/boost/sandbox/variadic-templates\
   ../../src

and the resulting CMakeCache.txt didn't have the -std or the -I flags:

//CXX compiler.
CMAKE_CXX_COMPILER:FILEPATH=/home/evansl/download/gcc/4.3-20071005/install/bin/g++

This is needed in order to test the variadic compiler. The -std flag
signals variadic templates and the -I is to include my variadic boost
directory ahead of the normal boost directory. So, unless there's a
workaround, I think this is a definite negative on cmake's side of the
comparison with BB. With BB, in my user-config.jam, I just have this:

using gcc
   : 4.3_v
   :
"/home/evansl/download/gcc/variadic-templates/gcc-4.3-20070323/install/bin/g++"

   :
<cxxflags>-I/home/evansl/prog_dev/boost-cvs/ro/boost/sandbox/variadic-templates

     <cxxflags>-std=gnu++0x
   ;

and then just say `bjam --toolset=gcc-4.3_v` to get this compiler with
these flags.

>
> 3. You want some sort of mapping between the CMakeLists.txt input files
> and the
> generated Makefiles.

Yes. However, I've had no real experience and it may not be that
necessary. I was just extrapolating my experience with c++ macros.

> To answer those issues:
>
> 1. Yes, you can not change the compiler once cmake has run.
[snip]
>
> 2. make source.i will generate preprocessed output for a given compiler.
> make help in a directory will show the possible targets to make.

Yes, that's what Brad mentioned here:

http://article.gmane.org/gmane.comp.lib.boost.build/16524

However, what I want is to filter the output through csplit and then
ident to it's more readable.

>
> 3. You are the first to make this request. For each directory in the
> source tree that has a CMakeLists.txt file, a directory in the binary
> tree will be created. The lines of the CMakeLists.txt file do
> not directly map to any particular line of the Makefile. I something
> could be done here, but I am not sure how useful it would be.

You're probably right. As I mentioned, it was an extrapolation of my
experience with cpp macros. Since the output of cmake macro's is much
more user-readable and probably much easier to trace back to the
source, I withdraw the request.

Thanks for your response.

-Larry


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk