2009-10-18 8 views
0

J'essaie le script lua avec C++ sous Mac OS X. Je trouvais un moyen de faire en sorte que le programme retourne le répertoire de travail actuel. Ce n'est pas un problème avec getcwd, mais ensuite je suis venu une chose:Comment faire XCode mettre les ressources nécessaires dans le dossier "build"?

Mon foo.lua reste sur son chemin initial seulement. Lorsque je compile un programme, il n'est pas copié dans le répertoire build/Debug. Bien sûr, je peux saisir mon script là-bas, mais ce n'est pas pratique. XCode ou n'importe quel IDE devrait transporter des ressources vers la zone de construction. XCode le fait automatiquement avec l'application iPhone, mais cela semble être un cas différent. Pour ce cas, comment commander XCode pour mettre les ressources respectives dans les répertoires de construction?

int main (int argc, char * const argv[]) { 

... 
... 

    luaL_dofile(luaVM,"/Users/yourNameHere/Desktop/LuaSandbox/LetsTryLua/foo.lua"); 
    //typing the whole absolute path here is just ugly and impractical. 
... 
... 

    printf("working directory: %s", buffer); 
    //output is: working directory: /Users/yourNameHere/Desktop/LuaSandbox/LetsTryLua/build/Debug 

... 
... 

Répondre

2

Plutôt que de coder en dur le chemin de votre script Lua vous voudrez peut-être utiliser l'API de NSBundle pour le trouver:

NSBundle * mainNSBundle = [NSBundle mainBundle]; NSString * luaFilePath = [mainNSBundle pathForResource: @ "foo" deType: @ "lua" inDirectory: NULL forLocalization: NULL];

luaL_dofile (luaVM, [luaFilePath UTF8String]);

Cela se trouve dans le dossier du bundle (si vous avez ajouté l'étape de construction "Copier les ressources de regroupement" à votre cible comme indiqué ci-dessus.)

2

Parce que vous utilisez un fichier .lua comme une ressource, je soupçonne que ce n'est pas reconnu comme un type de ressource standard et par conséquent, il n'a pas été automatiquement copié. Vous devriez être en mesure de le faire en ajoutant une étape supplémentaire de compilation des ressources de regroupement à votre cible, puis en y ajoutant votre fichier dans la vue du projet.

1

Si vous créez un outil de ligne de commande qui n'est pas un ensemble, il n'y aura jamais de bonne solution. Si vous créez une application normale, la solution susmentionnée fonctionnera, mais vous devrez arrêter de supposer que votre répertoire de travail est paramétré de façon à avoir une signification même à distance à tout moment et utiliser les méthodes appropriées pour trouver les ressources stockées dans votre bundle.

Questions connexes