<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 12"><meta name="Originator" content="Microsoft Word 12"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cabridges%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"><link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cabridges%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"><link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cabridges%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"><style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;
        mso-font-alt:"Calisto MT";
        mso-font-charset:0;
        mso-generic-font-family:roman;
        mso-font-pitch:variable;
        mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;
        mso-font-alt:"Century Gothic";
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:modern;
        mso-font-pitch:fixed;
        mso-font-signature:-1610611985 1073750091 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin:0in;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Calibri;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.5pt;
        font-family:Consolas;
        mso-fareast-font-family:Calibri;
        mso-fareast-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-unhide:no;
        mso-style-locked:yes;
        mso-style-link:"Plain Text";
        mso-ansi-font-size:10.5pt;
        mso-bidi-font-size:10.5pt;
        font-family:Consolas;
        mso-ascii-font-family:Consolas;
        mso-hansi-font-family:Consolas;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Calibri;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;
        mso-header-margin:.5in;
        mso-footer-margin:.5in;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style><p class="MsoPlainText">Hi JD,</p><p class="MsoPlainText">Busy day, at a conference all day, and just got a chance to look into this.</p><p class="MsoPlainText"><br></p><p class="MsoPlainText">Unfortunately, no, the &quot;pretty much make sure&quot; part actually doesn&#39;t.</p>
<p class="MsoPlainText"><br></p><p class="MsoPlainText">With the add_dependency in place on the executable, to bind it to the external target, still, the external target is not generated before the rc is compiled.  The interproject dependency is correct in the output (i.e. I see that bbs PROJ has a dependency on externalDependency PROJ) but the project is not invoked at the right time.</p>
<p class="MsoPlainText"><br></p><p class="MsoPlainText">so this:<br></p><p class="MsoPlainText">add_executable( cm_bbsExe WIN32 ${SOURCES} )<br>target_link_libraries( cm_bbsExe winmm ... )<br></p><p class="MsoPlainText">add_dependencies( cm_bbsExe externalDependency )<br>
<br></p><p class="MsoPlainText">behaves like this:</p><p class="MsoPlainText"></p><p class="MsoPlainText">myExe : bbs.rc</p><p class="MsoPlainText">myExe : externalDependency</p><p class="MsoPlainText"><br></p><p class="MsoPlainText">
which leaves the relationship between the externalDependency and bbs.rc undefined.  50/50, and it fails.  I suspect that VC plods along, resolving it&#39;s dependencies, and it gets to the RC dependency before it gets to the externalDependency.<br>
</p><p class="MsoPlainText"><br></p><p class="MsoPlainText">Perhaps the problem is that when cmake scans the RC file, it doesn&#39;t understand how to resolve the included file that does not exist; or does not equate it to an external dependency ?  Even telling it that it&#39;s generated does not help.</p>
<p class="MsoPlainText"><br></p><p class="MsoPlainText">SET_SOURCE_FILES_PROPERTIES(${EnterpriseDir}/lib/rsrc/msg00001.bin PROPERTIES GENERATED 1)</p><p class="MsoPlainText"><br></p><p class="MsoPlainText"></p><p class="MsoPlainText">
What I need is either to make cmake realize that externalDependency and msg00001.bin are one and the same (so that it sees the dependency), or to bind the inter-project dependency explicitly to the RC file that includes the bin file.</p>
<p class="MsoPlainText"><br></p><p class="MsoPlainText">Other than that, my only other option is to set up the resource compile as a custom rule.  <br></p><p class="MsoPlainText"><br></p><p class="MsoPlainText">Is there any plan to allow file-level dependencies to be specified in cmake ?  And/or is there another option ?</p>
<p class="MsoPlainText"><br></p><p class="MsoPlainText">Thanks again for all your help with this.<br></p><p class="MsoPlainText"><br></p><p class="MsoPlainText"><br></p><p class="MsoPlainText"><br></p>

<p class="MsoPlainText">&gt;I was just playing with this...</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;cmake_minimum_required(VERSION 2.8)</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;set( FAKE source.h )</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;#this would be text-&gt;.h</p>

<p class="MsoPlainText">&gt;add_custom_command( OUTPUT source.h</p>

<p class="MsoPlainText"><span style="">&gt;                    
</span>#DEPENDS ${SACK_BASE}/all_resources.rc</p>

<p class="MsoPlainText"><span style="">&gt;                    
</span>COMMAND echo \#include \&quot;stdio.h\&quot; &gt;source.h</p>

<p class="MsoPlainText"><span style="">&gt; </span>)</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;# this would be .h used by</p>

<p class="MsoPlainText">&gt;add_custom_command( OUTPUT main.c</p>

<p class="MsoPlainText"><span style="">&gt;     </span><span style="">                </span>DEPENDS source.h</p>

<p class="MsoPlainText"><span style="">&gt;                    
</span>COMMAND echo int main( void ) { return 1\; } &gt;main.c</p>

<p class="MsoPlainText"><span style="">&gt; </span>)</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;ADD_CUSTOM_TARGET( generate_foo DEPENDS main.c )</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;# have to touch filea.c fileb.c and filec.c yourself...
for brevity...</p>

<p class="MsoPlainText">&gt;set( SOURCES main.c filea.c fileb.c filec.c )</p>

<p class="MsoPlainText">&gt; <br></p>

<p class="MsoPlainText">&gt;add_executable( main ${SOURCES} )</p>

<p class="MsoPlainText">&gt;# this pretty much makes sure that the header is
generated before</p>

<p class="MsoPlainText">&gt;other tings are compiled.</p>

<p class="MsoPlainText">&gt;add_dependencies( main generate_foo )</p>

<p class="MsoPlainText"> </p>

<p class="MsoPlainText"> </p>