[CMake] Help debug crazy Windows MSVC issue

J Decker d3ck0r at gmail.com
Mon Feb 17 12:24:00 EST 2014


visual studio supports a verbosity setting on the command line...
/v:[qmnd,diag]

Specifies the amount of information to display in the build log. Each
logger displays events based on the verbosity level that you set for
that logger.

You can specify the following verbosity levels: q[uiet], m[inimal],
n[ormal], d[etailed], and diag[nostic].

The following setting is an example: /verbosity:quiet

that works on MSBuild (use msbuild instead of devenv, rqeuires minor
modifications to target parameters)


On Mon, Feb 17, 2014 at 5:23 AM, Paul Smith <paul at mad-scientist.net> wrote:
> Thanks Hendrk.  It's good to know I'm not crazy or overlooking something
> simple, even if the answer is not what I wanted.
>
> I did some other experimentation last night and I'll followup with some
> results, which may be interesting.
>
> Can anyone tell me how to get the Visual Studio output to show complete
> command lines, including switches, for the compiler and linker?  The
> equivalent to "make VERBOSE=1"?  All the searching I've done suggests
> starting Visual Studio and invoking the build from there after tweaking
> some configuration, but I'm running via a remote terminal and using
> devenv to start the build.  Is there no way to do this without building
> from inside VS?
>
>
> On Mon, 2014-02-17 at 10:20 +0100, Hendrk Sattler wrote:
>> The DEPENDS above should be a MAIN_DEPENDENCY (not sure if that
>> actually changes anything)
>
> Unfortunately in my real situation, a single invocation of the generator
> actually builds 43 different source and header files, and its input is a
> similar (but not one-for-one) number of files.  So there's no obvious
> MAIN_DEPENDENCY.  I don't think it matters, based on my reading of the
> cmake docs.
>
> My situation is even more complicated because the generator itself is a
> Java program that needs to be built, by cmake, before it can be invoked
> to generate the files.
>
>> The custom target gains you nothing. The problem here are actually the
>> tools: Visual Studio 10 totally relies on the custom build tool to
>> protect itself when run in parallel.
>
> Just to be clear, VS 2012 would behave the same way right?  We have had
> on our project plans migrating there; if it might fix this problem we
> could re-evaluate priorities.  But I expect that wouldn't matter.
>
>> It will run the generator as many times as the bar.cpp is mentioned in
>> different targets, even in parallel if that is enabled. And that's
>> what you see.
>
> That's a critical bit of information, and does indeed jibe with what I'm
> seeing and what I discovered after I sent my last email.  I'll follow up
> with some notes.
>
>> Solutions:
>> a) Add "cmake -E copy_if_different" to bar-static.cpp and
>> bar-shared.cpp and use those (means: use generated leaf files only in
>> one target).
>> or
>> b) Switch off the parallel (target) building in the Visual Studio
>> options (this will still generate the files multiple times)
>> or
>> c) Use jom (and NMake Makefiles generator)
>
> If it were up to me I'd switch to using UNIX Makefiles and install GNU
> make on the Windows systems, just because it's a known quantity (that
> seems to work).  Unfortunately there are a few people who use Visual
> Studio as development environments and they certainly want CMake to
> generate the project files for them.
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake


More information about the CMake mailing list