<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=RU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello everyone,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I don’t know if I’ve found a bug in clang-cl using Visual Studio 2015, or it’s a quite normal behavior… It would be nice if someone clarify it and (better) fix something in clang-cl, because the current behavior is IMHO very confusing.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Background: Visual Studio 2015, version 14.0.25431.01 Update 3, LLVM version 6.0.1 for win64<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>So, the problem is MSVC (under some condition) would always require to rebuild a project that has to be built with LLVM-vs2014 toolset, even if it’d just finished last rebuild.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The root cause of it in the absence of a file, that is specified under “Configuration Properties / C/C++ / Output Files / Program Database File Name” (typically, it’s filled with macro “$(IntDir)vc$(PlatformToolsetVersion).pdb” that expands to something similar to “x64\Debug\vc140.pdb”). I might be wrong in general case, but in my case this file is not generated by clang-cl at all during build process, it’s generated only by VC’s native compiler. So, should one delete it intentionally during manual cleanup or by an accident, MSVC would start to always require a full project rebuild before each run/debug.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>It’s very easy to reproduce the problem: create a new Win32 console project in MSVC, then immediately change the toolset used to build the project to LLVM-vs2015 and then build the project (don’t build the project with native compiler before this step). Then run it and notice that MSVC would require the project to be rebuild.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Now, if one to switch back the toolset to VC’s native, build the project (to produce corresponding .pdb file), then switch the toolset to LLVM again and then build it and after that run it – MSVC would start the program immediately.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>If the .pdb file is not required to run/debug a project, I guess it would be much better if clang-cl to emit some kind of warning/information during compilation about that fact. I’ve just wasted about 3-4 hours to find out why VC requires project rebuilding all the time…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:RU'>S</span><span style='mso-fareast-language:RU'>incerely,</span><span lang=EN-US style='mso-fareast-language:RU'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:RU'>Aleksei<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>