Je me demande s'il existe un moyen d'utiliser FileMerge en tant qu'outil autonome. Je ne veux pas installer Xcode, puisque je n'en ai pas besoin. Je veux juste l'application FileMerge. Est-ce possible ?
Réponse
Trop de publicités?FileMerge 2.8, livré avec Xcode 5.0.1, établit des liens avec les frameworks situés à l'intérieur du bundle Xcode.app. Les bibliothèques partagées utilisées par FileMerge peuvent être affichées en exécutant la commande :
otool -L /Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge
La sortie de cette commande indique que FileMerge doit utiliser les frameworks DevToolsInterface, DevToolsCore et DevToolsFoundation :
/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge:
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1247.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1052.0.0)
@rpath/DevToolsInterface.framework/Versions/A/DevToolsInterface (compatibility version 1.0.0, current version 3000.1.0)
@rpath/DevToolsCore.framework/Versions/A/DevToolsCore (compatibility version 1.0.0, current version 2404.0.0)
@rpath/DevToolsFoundation.framework/Versions/A/DevToolsFoundation (compatibility version 1.0.0, current version 3001.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 852.0.0)
Le préfixe @rpath
indique que dyld
utilisera la liste des chemins d'exécution pour rechercher les cadres référencés. Plus précisément, FileMerge contient "../OtherFrameworks"
dans sa liste de chemins d'exécution. Lorsqu'ils sont situés à l'intérieur du bundle Xcode.app, ces frameworks sont exactement là où FileMerge s'attend à les trouver.
Cependant, si vous copiez FileMerge hors du bundle Xcode.app, FileMerge se plantera au lancement. Cela se produit parce que les frameworks référencés (référencés ci-dessus) ne sont pas dans la liste des chemins d'exécution, ce qui provoque le crash de dyld
pour sortir avec une erreur de "image not found"
. La raison pour laquelle il ne peut pas trouver les cadres référencés est qu'un dossier au chemin relatif "../OtherFrameworks"
n'existe pas et les cadres n'existent pas dans les autres dossiers répertoriés dans le chemin d'exécution.
Pour utiliser FileMerge sans que l'application Xcode soit installée, vous avez plusieurs options :
-
Copiez FileMerge à l'emplacement de votre choix, et copiez le contenu de
/Applications/Xcode.app/Contents/OtherFrameworks/
à l'un des dossiers référencés dans la liste des chemins d'exécution (~/Library/Frameworks
o/Library/Frameworks
sont probablement les meilleurs choix). -
Copiez FileMerge à l'emplacement de votre choix, et copiez le contenu de
/Applications/Xcode.app/Contents/OtherFrameworks/
d'être à"../OtherFrameworks"
par rapport à l'application FileMerge (par exemple, si FileMerge se trouve à~/Applications
copier le dossier"OtherFrameworks"
a~/OtherFrameworks
Editer
La réponse ci-dessus permet de lancer FileMerge, mais l'application se termine lorsque vous tentez de comparer des fichiers. Apparemment, l'application recherche des informations sur la plate-forme au niveau du chemin d'accès ../Developer/Platforms/MacOSX.platform/Info.plist
. Cela signifie qu'il est nécessaire de copier Info.plist
de /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist
a ../Developer/Platforms/MacOSX.platform/Info.plist
(par rapport à FileMerge.app). Voici quelques étapes à suivre pour copier FileMerge dans un dossier à l'adresse suivante ~/Applications
:
mkdir ~/Applications
cp -R /Applications/Xcode.app/Contents/Applications/FileMerge.app ~/Applications
cp -R /Applications/Xcode.app/Contents/OtherFrameworks/* ~/Library/Frameworks
mkdir -p ~/Developer/Platforms/MacOSX.platform
cp /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist ~/Developer/Platforms/MacOSX.platform