https://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&feed=atom&action=historyCMake:MacOSXLinkerAndXCodeStuff - Revision history2024-03-28T09:00:05ZRevision history for this page on the wikiMediaWiki 1.38.6https://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=62728&oldid=prevKwrobot: Replace content with link to new CMake community wiki2018-04-30T15:40:58Z<p>Replace content with link to new CMake community wiki</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:40, 30 April 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">=Building multiple configurations with Xcode=</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{CMake/Template/Moved}}</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">If you do release and debug builds with Xcode for frameworks, Xcode will create completely separate frameworks for each</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>This <ins style="font-weight: bold; text-decoration: none;">page </ins>has <ins style="font-weight: bold; text-decoration: none;">moved [https</ins>://<ins style="font-weight: bold; text-decoration: none;">gitlab.kitware</ins>.<ins style="font-weight: bold; text-decoration: none;">com</ins>/<ins style="font-weight: bold; text-decoration: none;">cmake</ins>/<ins style="font-weight: bold; text-decoration: none;">community</ins>/<ins style="font-weight: bold; text-decoration: none;">wikis</ins>/<ins style="font-weight: bold; text-decoration: none;">doc</ins>/<ins style="font-weight: bold; text-decoration: none;">cmake</ins>/<ins style="font-weight: bold; text-decoration: none;">MacOSXLinkerAndXCodeStuff here]</ins>.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">configuration (e.g. Release and Debug). </del>This <del style="font-weight: bold; text-decoration: none;">is how CMake supports different configurations in Xcode.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">E.g. if you add "profile" to the list, additionally to the library "foolib" now also "foolib_profile" will be created within the same framework. To get different settings/compiler flags/etc. for this version, Xcode variables have to be defined for this build variant. They have the same name as the normal Xcode variables, but have again the name appended:</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"><pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">BUILD_VARIANTS ="normal debug"</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">OTHER_CFLAGS_debug=" -DMY_DEBUG=1 -DDEBUG=1 -gfull -O0 -fno-inline"</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">OTHER_CFLAGS_normal=" -DMY_DEBUG=0 -DNODEBUG=1 -gfull -O3"</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "_profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "_debug", an application will get the debug versions of the OS X libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he </del>has <del style="font-weight: bold; text-decoration: none;">to use a different variant name.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">=Versions in frameworks=</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Frameworks have version directories, usually version "A" with the symbolic link "Current" pointing to it.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">When an application is linked to a framework using "-framework Foo", then the link "Current" is used but the link destination is recorded in the application, so that when the application starts it doesn't matter to which version "Current" points.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">If there are two versions, "A" and "B" in a framework, and "Current" points to B, but a developer wants to build his application against version "A", the dylib_file option has to be used for gcc</del>:</div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"><pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">gcc -o Prog3 -dylib_file Foo.framework</del>/<del style="font-weight: bold; text-decoration: none;">Versions</del>/<del style="font-weight: bold; text-decoration: none;">B/Foo:Foo</del>.<del style="font-weight: bold; text-decoration: none;">framework</del>/<del style="font-weight: bold; text-decoration: none;">Versions</del>/<del style="font-weight: bold; text-decoration: none;">A/Foo -framework Foo</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Alternatively the library inside the framework could be used directly:</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"><pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">gcc -o Prog3 Foo.framework</del>/<del style="font-weight: bold; text-decoration: none;">Versions</del>/<del style="font-weight: bold; text-decoration: none;">A</del>/<del style="font-weight: bold; text-decoration: none;">Foo</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"><</del>/<del style="font-weight: bold; text-decoration: none;">pre></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">=dylib_compatibility_version and dylib_current_version=</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">dylib_current_version is the current version of a dyld library (equivalent to the full versioned name of a so library). dylib_compatibility_version is the version to which the current version is compatible. I.e. the current version 1.2.3 could be compatible down to version 1.0.0 (or any other version before it, e.g. 0.5.3). This is somewhat similar to the SOVERSION of an so library, where a different SO version means a really different version of the library, but with the two dyld versions this can be used much more fine grained.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0</del>.<del style="font-weight: bold; text-decoration: none;">9.0 the app will not start.</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">{{CMake/Template/Footer}}</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
</table>Kwrobothttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=62429&oldid=prevBrad.king at 12:35, 24 April 20182018-04-24T12:35:06Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:35, 24 April 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l35">Line 35:</td>
<td colspan="2" class="diff-lineno">Line 35:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0.9.0 the app will not start.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0.9.0 the app will not start.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">[[Category::</del>CMake<del style="font-weight: bold; text-decoration: none;">]]</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">{{</ins>CMake<ins style="font-weight: bold; text-decoration: none;">/Template/Footer}}</ins></div></td></tr>
</table>Brad.kinghttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=36893&oldid=prevNSGod: /* It's Xcode not XCode */2011-01-28T04:06:14Z<p><span dir="auto"><span class="autocomment">It's Xcode not XCode</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 04:06, 28 January 2011</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>=Building multiple configurations with <del style="font-weight: bold; text-decoration: none;">XCode</del>=</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>=Building multiple configurations with <ins style="font-weight: bold; text-decoration: none;">Xcode</ins>=</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>If you do release and debug builds with <del style="font-weight: bold; text-decoration: none;">XCode </del>for frameworks, <del style="font-weight: bold; text-decoration: none;">XCode </del>will create completely separate frameworks for each</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>If you do release and debug builds with <ins style="font-weight: bold; text-decoration: none;">Xcode </ins>for frameworks, <ins style="font-weight: bold; text-decoration: none;">Xcode </ins>will create completely separate frameworks for each</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>configuration (e.g. Release and Debug). This is how CMake supports different configurations in <del style="font-weight: bold; text-decoration: none;">XCode</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>configuration (e.g. Release and Debug). This is how CMake supports different configurations in <ins style="font-weight: bold; text-decoration: none;">Xcode</ins>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>E.g. if you add "profile" to the list, additionally to the library "foolib" now also "foolib_profile" will be created within the same framework. To get different settings/compiler flags/etc. for this version, <del style="font-weight: bold; text-decoration: none;">XCode </del>variables have to be defined for this build variant. They have the same name as the normal <del style="font-weight: bold; text-decoration: none;">XCode </del>variables, but have again the name appended:</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>E.g. if you add "profile" to the list, additionally to the library "foolib" now also "foolib_profile" will be created within the same framework. To get different settings/compiler flags/etc. for this version, <ins style="font-weight: bold; text-decoration: none;">Xcode </ins>variables have to be defined for this build variant. They have the same name as the normal <ins style="font-weight: bold; text-decoration: none;">Xcode </ins>variables, but have again the name appended:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><pre></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l13">Line 13:</td>
<td colspan="2" class="diff-lineno">Line 13:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "_profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "_debug", an application will get the debug versions of the <del style="font-weight: bold; text-decoration: none;">OSX </del>libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "_profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "_debug", an application will get the debug versions of the <ins style="font-weight: bold; text-decoration: none;">OS X </ins>libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td></tr>
</table>NSGodhttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=14475&oldid=prevPlowman at 07:01, 16 January 20092009-01-16T07:01:04Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:01, 16 January 2009</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l34">Line 34:</td>
<td colspan="2" class="diff-lineno">Line 34:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>dylib_current_version is the current version of a dyld library (equivalent to the full versioned name of a so library). dylib_compatibility_version is the version to which the current version is compatible. I.e. the current version 1.2.3 could be compatible down to version 1.0.0 (or any other version before it, e.g. 0.5.3). This is somewhat similar to the SOVERSION of an so library, where a different SO version means a really different version of the library, but with the two dyld versions this can be used much more fine grained.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>dylib_current_version is the current version of a dyld library (equivalent to the full versioned name of a so library). dylib_compatibility_version is the version to which the current version is compatible. I.e. the current version 1.2.3 could be compatible down to version 1.0.0 (or any other version before it, e.g. 0.5.3). This is somewhat similar to the SOVERSION of an so library, where a different SO version means a really different version of the library, but with the two dyld versions this can be used much more fine grained.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0.9.0 the app will not start.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0.9.0 the app will not start.</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category::CMake]]</ins></div></td></tr>
</table>Plowmanhttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=10295&oldid=prevRooper: /* Building multiple configurations with XCode */2007-08-31T07:48:08Z<p><span dir="auto"><span class="autocomment">Building multiple configurations with XCode</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:48, 31 August 2007</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l13">Line 13:</td>
<td colspan="2" class="diff-lineno">Line 13:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></pre></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "<del style="font-weight: bold; text-decoration: none;">profile</del>", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "<del style="font-weight: bold; text-decoration: none;">debug</del>", an application will get the debug versions of the OSX libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "<ins style="font-weight: bold; text-decoration: none;">_profile</ins>", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "<ins style="font-weight: bold; text-decoration: none;">_debug</ins>", an application will get the debug versions of the OSX libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td></tr>
</table>Rooperhttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=10290&oldid=prevAlex: /* Building multiple configurations with XCode */2007-08-30T13:03:03Z<p><span dir="auto"><span class="autocomment">Building multiple configurations with XCode</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:03, 30 August 2007</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l2">Line 2:</td>
<td colspan="2" class="diff-lineno">Line 2:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>If you do release and debug builds with XCode for frameworks, XCode will create completely separate frameworks for each</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>If you do release and debug builds with XCode for frameworks, XCode will create completely separate frameworks for each</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>configuration (e.g. Release and Debug).</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>configuration (e.g. Release and Debug)<ins style="font-weight: bold; text-decoration: none;">. This is how CMake supports different configurations in XCode</ins>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l14">Line 14:</td>
<td colspan="2" class="diff-lineno">Line 14:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "debug", an application will get the debug versions of the OSX libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "debug", an application will get the debug versions of the OSX libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=Versions in frameworks=</div></td></tr>
</table>Alexhttps://public.kitware.com/Wiki/index.php?title=CMake:MacOSXLinkerAndXCodeStuff&diff=10289&oldid=prevAlex: New page: =Building multiple configurations with XCode= If you do release and debug builds with XCode for frameworks, XCode will create completely separate frameworks for each configuration (e.g. R...2007-08-30T12:58:51Z<p>New page: =Building multiple configurations with XCode= If you do release and debug builds with XCode for frameworks, XCode will create completely separate frameworks for each configuration (e.g. R...</p>
<p><b>New page</b></p><div>=Building multiple configurations with XCode=<br />
<br />
If you do release and debug builds with XCode for frameworks, XCode will create completely separate frameworks for each<br />
configuration (e.g. Release and Debug).<br />
<br />
There is an additional mechanism how this can be done. In the configuration dialog "Build variants" can be created, the default variant is "normal". When adding an additional name to this list, the library will be built in an additional variant and the name will be appended to the library name.<br />
E.g. if you add "profile" to the list, additionally to the library "foolib" now also "foolib_profile" will be created within the same framework. To get different settings/compiler flags/etc. for this version, XCode variables have to be defined for this build variant. They have the same name as the normal XCode variables, but have again the name appended:<br />
<br />
<pre><br />
BUILD_VARIANTS ="normal debug"<br />
OTHER_CFLAGS_debug=" -DMY_DEBUG=1 -DDEBUG=1 -gfull -O0 -fno-inline"<br />
OTHER_CFLAGS_normal=" -DMY_DEBUG=0 -DNODEBUG=1 -gfull -O3"<br />
</pre><br />
<br />
When building something which links to that framework, the normal name is used when building. When that application starts, by default it will load the normal variant. If the developer wants to use the "profile" variant, he has to set the DYLD_IMAGE_SUFFIX environment variable accordingly. So if DYLD_IMAGE_SUFFIX is set to "profile", the application will get "foolib_profile". The same mechanism is used in the original OSX frameworks, there are "debug" variants of the frameworks available. This means if DYLD_IMAGE_SUFFIX is set to "debug", an application will get the debug versions of the OSX libs and the debug version of "foolib" (if it exists). If the developer wants only debug versions of his own libs then he has to use a different variant name.<br />
<br />
<br />
<br />
=Versions in frameworks=<br />
<br />
Frameworks have version directories, usually version "A" with the symbolic link "Current" pointing to it.<br />
When an application is linked to a framework using "-framework Foo", then the link "Current" is used but the link destination is recorded in the application, so that when the application starts it doesn't matter to which version "Current" points.<br />
<br />
If there are two versions, "A" and "B" in a framework, and "Current" points to B, but a developer wants to build his application against version "A", the dylib_file option has to be used for gcc:<br />
<pre><br />
gcc -o Prog3 -dylib_file Foo.framework/Versions/B/Foo:Foo.framework/Versions/A/Foo -framework Foo<br />
</pre><br />
<br />
Alternatively the library inside the framework could be used directly:<br />
<pre><br />
gcc -o Prog3 Foo.framework/Versions/A/Foo<br />
</pre><br />
<br />
=dylib_compatibility_version and dylib_current_version=<br />
<br />
dylib_current_version is the current version of a dyld library (equivalent to the full versioned name of a so library). dylib_compatibility_version is the version to which the current version is compatible. I.e. the current version 1.2.3 could be compatible down to version 1.0.0 (or any other version before it, e.g. 0.5.3). This is somewhat similar to the SOVERSION of an so library, where a different SO version means a really different version of the library, but with the two dyld versions this can be used much more fine grained.<br />
So if an executable is linked against a dyld library with compatibility version 1.0.0, but when executing the linker finds only a current version 0.9.0 the app will not start.</div>Alex