[CMake] Newbie questions: verbosity and compiler invocation

David Aldrich David.Aldrich at EU.NEC.COM
Wed Sep 8 11:23:11 EDT 2010


Hi Michael

Thanks for your answers.

One other thing was worrying me. Currently, if a user changes our manually written makefile and checks it into svn, other users can do an svn update and then invoke make to construct a new build. 

If we move to cmake, users would modify and commit CMakeLists.txt. I was worried that they would then need to run cmake followed by make. They might forget to do both. But it seems that 'make' compares the timestamp of the generated makefile against that of CMakeLists.txt and rebuilds the makefile if it is older.  Therefore, the developer would not need to run cmake, just 'make'. Am I correct?

I guess the only new action in the workflow would be that a complete cmake command must be invoked on a freshly checked out working copy, if the build tree is in that working copy.  Am I correct?

Thanks

David

> -----Original Message-----
> From: Michael Wild [mailto:themiwi at gmail.com]
> Sent: 08 September 2010 15:56
> To: David Aldrich
> Cc: CMake at cmake.org
> Subject: Re: [CMake] Newbie questions: verbosity and compiler invocation
> 
> 
> On 8. Sep, 2010, at 16:33 , David Aldrich wrote:
> 
> > Hi
> >
> > I am experimenting with using CMake to replace our manually written gnu
> makefiles on Linux. I have a couple of questions:
> >
> > 1) VERBOSITY
> >
> > I would like to see the compiler command on the console when running
> make. I know that one can run:
> >
> > make VERBOSE=1
> >
> > but that displays a lot of detail, for example:
> >
> > make[1]: Entering directory ...
> >
> > Is there a way that I reduce the commentary to just show the compiler
> commands? For example:
> >
> > /usr/bin/c++     -o CMakeFiles/Kernel.dir/ErrorHandler.cpp.o -c
> /<mypath>/Kernel/ErrorHandler.cpp
> 
> AFAIK there's no way to do that (apart from writing a wrapper script which
> echoes the command to stdout and then invokes it).
> 
> >
> > 2) COMPILER
> >
> > As shown above, cmake is invoking:
> >
> > /usr/bin/c++
> >
> > I don't know what this tool is.  How can I specify to use /usr/bin/g++ ?
> >
> > Best regards
> >
> > David
> 
> The first time you invoke CMake, do it like this:
> 
> CC=/usr/bin/gcc CXX=/usr/bin/g++ cmake /path/to/source
> 
> Alternatively, you can pass -DCMAKE_C_COMPILER=/usr/bin/gcc to the cmake
> program (similarly CMAKE_CXX_COMPILER for the c++ compiler), but that can
> have some nasty side-effects (e.g deleting and rebuilding the whole cache
> if it already exists).
> 
> Usually, on Linux systems, /usr/bin/c++ is just another name for
> /usr/bin/g++. It is traditional to call the default C++ compiler
> /usr/bin/c++, such that hand-crafted Makefiles don't have to guess a name.
> Similarly, /usr/bin/cc is the default C compiler.
> 
> Hope this clears things up a bit for you
> 
> Michael
> 
> --
> There is always a well-known solution to every human problem -- neat,
> plausible, and wrong.
> H. L. Mencken



More information about the CMake mailing list