<div class="gmail_quote">I would think immediately before the first install rule that installs the bundle itself or something into the bundle location (assuming you have such a thing).<br><br>Otherwise, simply before whatever it is that initially creates the bundle on which you are calling fixup_bundle...<br>
<br><br>On Tue, Dec 21, 2010 at 12:12 PM, Ben Medina <span dir="ltr">&lt;<a href="mailto:ben.medina@gmail.com">ben.medina@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
That sounds fine. However, I have install rules located in multiple<br>
files; my project contains multiple apps, and each apps has its<br>
install rules in its own lists file. Where do I put my &quot;delete bundle&quot;<br>
install code to ensure that it runs before all other install commands?<br>
<br>
Thanks,<br>
<font color="#888888">Ben<br>
</font><div><div></div><div class="h5"><br>
On Tue, Dec 21, 2010 at 4:04 AM, David Cole &lt;<a href="mailto:david.cole@kitware.com">david.cole@kitware.com</a>&gt; wrote:<br>
&gt; copy_resolved_item_into_bundle only skips the copy if the file to be copied<br>
&gt; and the destination file refer to exactly the same file. In that sense, it<br>
&gt; already is a copy_if_different.<br>
&gt;<br>
&gt; On the Mac, after a bundle is created and fixed up for the first time, all<br>
&gt; the references from one library to another are &quot;internal to the bundle&quot; via<br>
&gt; @executable_path references. Once that is done, the entities which had<br>
&gt; originally referred to external libraries (typically by their full path<br>
&gt; names in the build tree) no longer refer to those external libraries, but to<br>
&gt; the copies inside the bundle.<br>
&gt;<br>
&gt; Now, the second time fixup_bundle runs, there is nothing that refers to that<br>
&gt; library in the build tree *unless* one of your install rules places<br>
&gt; something new inside the bundle that has an external reference again. If you<br>
&gt; have simply rebuilt a library that got pulled in via the first call to<br>
&gt; fixup_bundle, there is nothing that will pull in the new copy again. (That&#39;s<br>
&gt; sort of the point of fixup_bundle is to break those &quot;external&quot; references.)<br>
&gt;<br>
&gt; So... this is basically a long-winded, explanatory way of saying &quot;don&#39;t do<br>
&gt; that.&quot; :-)<br>
&gt;<br>
&gt; For your workflow to be bullet-proof, you should delete the bundle at step<br>
&gt; 2.5 -- after changing one of the pulled in libraries, but before running<br>
&gt; &quot;make install&quot; again. Perhaps it would even be best to put in a &quot;delete<br>
&gt; bundle&quot; step as the very first part of &quot;make install&quot;, just as a call to<br>
&gt; &quot;fixup_bundle&quot; is typically your very last step of make install.<br>
&gt;<br>
&gt; I realize this is non-ideal, but I think it&#39;s reasonable given the benefit<br>
&gt; that fixup_bundle provides. As always, I&#39;m open to discussion and<br>
&gt; suggestions if anybody has ideas for improving BundleUtilities.<br>
&gt;<br>
&gt;<br>
&gt; HTH,<br>
&gt; David<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Dec 20, 2010 at 6:44 PM, Ben Medina &lt;<a href="mailto:ben.medina@gmail.com">ben.medina@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello all,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m using fixup_bundle as part of my installation rules. One problem<br>
&gt;&gt; I&#39;ve run into is that if you build the install target multiple times,<br>
&gt;&gt; fixup_bundle (or, more specifically, copy_resolved_item_into_bundle)<br>
&gt;&gt; won&#39;t copy a library over if it&#39;s coming from the same location. This<br>
&gt;&gt; causes a failure for the following workflow:<br>
&gt;&gt;<br>
&gt;&gt; 1. Build the install target.<br>
&gt;&gt; 2. Make a change to one of the libraries that fixup_bundle resolved for<br>
&gt;&gt; you.<br>
&gt;&gt; 3. Build the install target again.<br>
&gt;&gt;<br>
&gt;&gt; The second time you build the install, the updated library does not<br>
&gt;&gt; get copied, and any application that depends on the change in that<br>
&gt;&gt; library will be broken.<br>
&gt;&gt;<br>
&gt;&gt; Is there is reason copy_resolved_item_into_bundle doesn&#39;t just use<br>
&gt;&gt; copy_if_different?<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; Ben<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the CMake FAQ at:<br>
&gt;&gt; <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; <a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>