I've just stumbled across some surprising cl.exe behavior, and I would like to 
see if the collective minds of this dist list has come across this before.

In my c++ project, I override CMAKE_CXX_FLAGS with my own flags, including /TP. 
 Using an nmake based build, this causes the linking step to bomb.  Enabling 
verbose mode for nMake, I saw that /TP was actually being defined twice, once 
by me and I suppose cMake did too for good measure.  By eliminating my flags 
one by one, I found that my /TP caused the link problem.

This is using cmake 2.6.4, 64bit MSVC tools and nmake generator.  Snippet of 
error log below.  Does this make sense to anybody?

Kent

====================
[100%] Building CXX object foobar/CMakeFiles/foobar.dir/blahManager.cpp.obj
        cd C:\Programming\foobar\nMake\foobar
        C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe  @C:\Users\kknox\AppData\Loca
l\Temp\nm26C5.tmp
Microsoft (R) C/C++ Optimizing Compiler Version 15.00.30729.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

cl   /DWIN32 /D_CONSOLE /EHsc /RTC1 /W3 /TP /DUNICODE /D_UNICODE /Od /D_DEBUG 
/MDd /Zi 
-IC:\Programming\boost_1_39_0  /TP /FoCMakeFiles\foobar.dir\blahManager.cpp.obj 
/FdC:\Programming\foobar\nMake\foobar\foobar.pdb -c 
C:\Programming\foobar\foobar\blahManager.cpp

blahManager.cpp
        cd C:\Programming\foobar\nMake
Linking CXX executable foobar.exe
        cd C:\Programming\foobar\nMake\foobar
        C:\Utils\cmake-2.6.4-win32-x86\bin\cmake.exe -E vs_link_exe C:\PROGRA~2\
MICROS~1.0\VC\bin\amd64\cl.exe   @CMakeFiles\foobar.dir\objects1.rsp @C:\
Users\kknox\AppData\Local\Temp\nm2E55.tmp
Microsoft (R) C/C++ Optimizing Compiler Version 15.00.30729.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

cl CMakeFiles\foobar.dir\foobar.cpp.obj 
CMakeFiles\foobar.dir\fooService.cpp.obj CMakeFiles\foobar.dir\stdafx.cpp.obj 
CMakeFiles\
foobar.dir\barService.cpp.obj CMakeFiles\foobar.dir\blahManager.cpp.obj

foobar.cpp.obj
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2146: syntax error : missing 
';' before identifier '¶8IJoí'
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C4430: missing type specifier - 
int assumed. Note: C++ does not support default-int
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2146: syntax error : missing 
';' before identifier 'y'
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C4430: missing type specifier - 
int assumed. Note: C++ does not support default-int
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2143: syntax error : missing 
';' before '%'
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C4430: missing type specifier - 
int assumed. Note: C++ does not support default-int
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C3193: '%' : requires '/clr' 
command line option
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2059: syntax error : '.'
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2018: unknown character '0x2'
CMakeFiles\foobar.dir\foobar.cpp.obj(2) : error C2018: unknown character '0x1'
CMakeFiles\foobar.dir\foobar.cpp.obj(3) : error C2018: unknown character '0x10'
CMakeFiles\foobar.dir\foobar.cpp.obj(3) : error C2018: unknown character '0x1'

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to