IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement OS X Discussion :

[X11] Bundle MacOS utilisant X11


Sujet :

Développement OS X

  1. #1
    Invité
    Invité(e)
    Par défaut [X11] Bundle MacOS utilisant X11
    Edit : Il y a eu un bug, j'avais posté dans "Programmation Linux/Gtk/Gtk+"

    Bonjour à tous.

    J'ai réussi à installer GTK+ sur mon Mac à l'aide de Fink et de X11. Je me suis créé un template pour XCode, permettant de me générer un bundle *.app.

    Cependant, il m'est impossible de le lancer ! Pas de problème de compilation, mais pour lancer l'application, il faut lancer l'exécutable à la main à l'aide la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open-x11 path_et_nom_de_lexecutable
    Comment créer un bundle fonctionnel ?

    Merci,
    Guillom.
    Dernière modification par Invité ; 17/04/2007 à 14h11.

  2. #2
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Peut-être en mettant ton exécutable en tant que sous-exécutable, je m'explique.

    Créer une application bundle normale qui va lancer ton sous exécutable en utilisant l'option -x11 avec la fonction system("open -x11 ./ton_executable"); par exemple. ça fait deux programmes pour le prix d'un mais c'est toujours mieux .

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ah ouais, bonne idée. Je vais tester.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas réussi.

    Si quelqu'un peut m'aider à modifier mon template afin qu'il comporte deux exécutables réunis dans le même *.app; et que le bundle fonctionne..
    Voila le template : GTK+ Bundle.zip.

    Merci d'avance.
    Guillom.

  5. #5
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    J'ai testé un simple petit system("open-x11 ./executable"); et en effet ça ne fonctionne pas.

    En fait j'ai trouvé la solution, qui est pour l'instant incomplète : utiliser l'adresse complète (system("open-x11 /Users/****/Desktop/Proj.../executable");). ça fonctionne mais il me reste à coder une fonction pour remplacer les espaces de l'adresse par des '\ ', ce que je ferai quand j'aurai plus d'énergie .

    Voici ce que j'ai codé pour l'instant :
    Code C : 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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
    char *getExecPath(char const *bundlePath, char const *execName)
    {
        char *path = NULL;
     
        if (bundlePath != NULL && execName != NULL)
        {
            path = malloc(strlen(bundlePath) + strlen(execName) + 1);
            if (path != NULL)
            {
                *path = '\0';
                strcat(path, bundlePath);
     
                size_t i, len = 0;
                len = strlen(bundlePath);
     
                for(i = len; path[i] != '/' ;i--)
                    path[i] = '\0';
     
                strcat(path, execName);
            }
        }
        return path;
    }
     
    int main(int argc, char **argv)
    {
        if (argc > 0)
        {
            char *path = getExecPath(argv[0], "Indenteur" );
            char *commande = malloc(strlen(path) + 12);
     
            if (commande != NULL)
            {
                *commande = '\0';
                strcat(commande, "open-x11 ");
                strcat(commande, path);
     
                system(commande);
            }
        }
        return 0;
    }

    Donc ça ne marche que pour les adresses sans espace pour le moment.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci de te pencher sur mon problème.

    En fait, je cherchais surtout comment faire deux exécutables dans le même projet, et comment dire que "tel fichier doit être compilé pour tel executable" ?

    Pour les relier, j'aurais su faire.

    Merci encore,
    Guillom.

  7. #7
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Je ne vois pas bien où est le problème…

    J'ai fait un projet qui fait ce que tu cherchais. Construit d'abord la cible (Target) 'executable' puis la cible 'Bundle', et hop tout est fait.
    Fichiers attachés Fichiers attachés

  8. #8
    Invité
    Invité(e)
    Par défaut
    En fait, le problème est que je voudrais faire un projet qui me construit l'exécutable avant de construire bundle .app : tout en même temps. Pas faire l'exécutable à part puis le mettre dans le bundle.

    Est-ce possible ?

    Merci beaucoup.
    Guillom.

  9. #9
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Non ce n'est pas possible, tu as deux exécutables donc forcément deux cibles, qui peuvent rentrer dans un seul projet. Es-tu si flemmard que ça ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ah non, pas du tout ! ^^ C'était juste pour savoir si c'était possible, parce que ça aurait été pratique.

    Merci beaucoup !

Discussions similaires

  1. [2.x] supprimer un bundle en utilisant la console
    Par van-bom dans le forum Symfony
    Réponses: 3
    Dernier message: 10/08/2014, 17h59
  2. Configurer bundles en utilisant Apache Felix configAdmin
    Par fahmi.bedoui dans le forum Plateformes réactives et architectures modulaires
    Réponses: 2
    Dernier message: 10/03/2013, 18h28
  3. [2.x] n3b Bundle impossible à utiliser
    Par RobKris63 dans le forum Symfony
    Réponses: 1
    Dernier message: 25/09/2012, 13h57
  4. [X11] Problème d'utilisation X11?
    Par stiko83 dans le forum Apple
    Réponses: 13
    Dernier message: 28/01/2011, 22h29
  5. Réponses: 6
    Dernier message: 25/07/2009, 01h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo