I'm seeing some build problems show up on cdash from some of my builds that use 
ninja. 

The error that shows up on cdash is: 
ninja: error: GetFileAttributesEx(c:\Program Files (x86)\Mcl : Command line 
warning D9025 : overriding ): The filename, directory name, or volume label 
syntax is incorrect. 

When building a set of 3rd party libraries, I simply add /w to the compile 
flags to suppress any warnings from them. 
I could go back to that and modify how I'm suppressing them to take out the 
default /W3 to avoid this "command line warning D9025" I'm getting. But, it 
doesn't show up on cdash anyway, and it uncovers another problem that should 
probably be fixed anyway. 

With some help from the ninja mailing list, they pointed me in the direction of 
cmcldeps included in CMake. 
I have now confirmed that a ".d" file generated by cmcldeps contains a line: 


....hdf5-1.8.10/src/CMakeFiles/hdf5.dir/H5Pdcpl.c.obj.d:c:\\Program\ Files\ 
(x86)\\Mcl\ :\ Command\ line\ warning\ D9025\ :\ overriding\ '\\W3'\ with\ 
'\\W0' \ 




cmcldeps calls cl.exe with the additional argument of /showIncludes and it 
parses the output to make a list of includes. 

When I call "cl.exe /nologo /showIncludes ... /W3 ... /w .... " manualy and 
redirect it, I noticed the D9025 warning is printed to stderr and everything 
else to stdout. And when printed to the console, or when both the stderr and 
stdout are redirected to the same file, I always get the D9025 warning on the 
first line. I also want to mention that compile errors go to stdout, not 
stderr. 




But, it seems that when cmcldeps calls cmSystemTools::RunSingleCommand(), the 
stderr and stdout are merged inconsistently. I'm guessing this inconsistency is 
why I get the D9025 warning on a line that starts with "Note: including file: 
..." 




I'm not sure if cmcldeps can be changed to ignore stderr, or if kwsysProcess 
needs fixed to alternately read stderr/stdout in the order the child process 
printed to them. I imagine the latter might be possible if the same HANDLE was 
given to the STARTUPINFO's hStdError and hStdOutput, if we aren't already doing 
that. I can't quickly tell what ProcessWin32.c is doing in that respect. 




Also, ninja appears to have some of its own dependency tracking capabilities. 
Is there any reason not to switch away from cmcldeps and use ninja's deps=msvc? 




So, does anyone have any tips on where to go next? 


Thanks, 

Clint 


-- 

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to