Bonjour,
Je développe une application cross plateforme Windows/MacOS.
Etant un débutant sous MAC, j'ai du mal à finaliser mon appli:
Je développe avec Qt une application qui utilise des librairies externes tel que opencascade.
Cette application dispose d'un système de plugin (dylib déguisés).
Je souhaiterais lancer mon application (mon .app) sauf qu’apparemment il ne trouve pas les
dylib tierces qu j'utilise.
J'ai fait un qtmacdeploy
je les ai copiées dans monApp.app/Contents/Frameworks
j'ai vu qu'il faudrait utiliser la commande install_name_tool (mais je ne comprends pas vraiment ce qu'elle fait ni comment s'en servir)
d'après des exemples pas vraiment documentés j'ai fait ce script:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 projectPath=$PWD outputDir=$PWD/build/$1 applicationLibPath=$PWD/build/$1/MediaCad.app/Contents/Frameworks applicationPath=$PWD/build/$1/MediaCad.app/Contents/MacOS teighaModulePath=$PWD/tx/macx teighaDylibDir=$PWD/bin/macx occDylib=$PWD/bin/macx/OCC #copie des modules tx cd $projectPath echo copy teigha tx cp $teighaModulePath/*.tx $applicationPath #copie des modules txv echo copy teigha txv cp $teighaModulePath/*.txv $applicationPath #copie des modules mrx compilés echo copy compiled mrx cp $outputDir/*.mrx $applicationPath #copie des modules txv compilés echo copy compiled txv cp $outputDir/*.txv $applicationPath #copie des modules tx compilés echo copy compiled tx cp $outputDir/*.tx $applicationPath echo copy extern files cp -R $projectPath/ExternFiles/* $applicationPath echo macdeploy macdeployqt $outputDir/MediaCad.app echo copy info.pList cp $projectPath/Mediacad/Info.plist $outputDir/MediaCad.app/Contents echo relink dylib cd $applicationLibPath compiledFileList=$(ls *.dylib) echo copy teigha dylib cp $teighaDylibDir/*.dylib $applicationLibPath #relink dylib générés for dylibFile in $compiledFileList do for teighaLib in $teighaDylibFileList do install_name_tool -id $teighaLib $applicationLibPath/$teighaLib install_name_tool -change $teighaLib @executable_path/../Frameworks/$teighaLib $dylibFile done done cd $applicationLibPath dylibFileList=$(ls *.dylib) cd $applicationPath moduleFileList=$(ls *.tx *.txv *.mrx) #relink des modules tx mrx txv for dylibFile in $dylibFileList do for module in $moduleFileList do install_name_tool -change $dylibFile @executable_path/../Frameworks/$dylibFile $module done done
Partager