Question

[EDIT] ==> Pour clarifier, dans les environnements où plusieurs cibles sont déployés dans le même répertoire, la planète Terre a décidé d'élaborer une convention d'ajouter « d » ou « _d » ou « _debug » à la version « DEBUG » (d'une bibliothèque ou exécutable). Une telle convention peut être considérée comme « omniprésente » et « compris », bien que (bien sûr) pas tout le monde le fait.

De même, pour résoudre l'ambiguïté entre « partagée » et des versions « statiques » d'une bibliothèque, une convention commune est d'ajouter quelque chose à distinguer entre le statique et partagé (comme « myfile.lib » pour-lib-sur-importation partagée -Windows et "myfile_s.lib" pour l'électricité statique import-lib-sur-Windows). Bien que Posix n'a pas cette ambiguïté basée sur l'extension de fichier, rappelez-vous que l'extension de fichier n'est pas utilisé sur la « ligne de liaison », donc il est tout aussi utile de pouvoir spécifier explicitement la version « statique » ou « partagée » d'une bibliothèque .

Aux fins de cette question, à la fois "debug/release" et "static/shared" sont promus à "convention omniprésente pour décorer la racine du nom de fichier" .

QUESTION: Est-ce que toute autre configuration de déploiement get « promu » à ce niveau de « convention omniprésente » telle qu'elle deviendrait explicite au nom de la racine cible de fichier

Je pense en cours est « non ». Pour que la réponse soit « oui », il faudrait:. Plus d'une configuration cible donnée est destinée à être « utilisé » (et donc déployé dans un répertoire commun, qui est la base supposée pour la question)

Dans le passé, nous avons compilé avec et sans- « plug-in web » capacité, qui exigeait que la décoration de la même nom, mais nous ne plus construire ces objectifs (je ne vais pas affirmer que comme un exemple). De même, nous compilons parfois avec et sans-support de caractères multi-octets, mais je déteste ça, je ne vais pas affirmer que ce soit.

[ORIGINAL QUESTION]

Nous sommes établir des conventions de nommage bibliothèque / politique, à appliquer sur les langues et les plates-formes (par exemple, nous soutenons les produits hybrides utilisant plusieurs langues sur différentes plates-formes, y compris C / C ++, C #, Java). Un objectif particulier est de nous assurer que nous traitons des objectifs / ressources pour le développement mobile (ce qui est nouveau pour nous) en plus de nos applications de bureau traditionnelles (et intégrées).

Bien sûr, un est d'avoir des chemins différents pour les cibles de différentes configurations de construction. Aux fins de cette question, la décision est prise d'avoir toutes les cibles co-localisent dans un seul répertoire, et à « décorer » la bibliothèque / ressources / nom de l'exécutable pour éviter les collisions en fonction de la configuration de construction (par exemple, « Debug » v. "RELEASE", "lib statique" v. "partagée / DLL", etc.)

La décision actuelle est similaire à d'autres sur le web, où nous jetons append pour éviter les collisions de nommage:

  MyName.lib           (release build, import for shared/dll)
  MyName_s.lib         (release build, static lib)

  MyName_d.lib         (debug build, import for shared/DLL)
  MyName_ud.lib        (Unicode/wide-char, debug, import for shared/DLL)
  MyName_usd.lib       (Unicode/wide-char, static lib, debug)

(Les exemples sont au-dessus de Windows, mais ces politiques appliquent également à nos systèmes POSIX.)

Elles sont basées sur:

  d     (release or debug)
  u     (ASCII or Unicode/wide-char)
  s     (shared/DLL or static-lib)

QUESTION: Nous ne disposons pas des applications existantes qui doivent être compilés monothread, et je crois comprendre que (contrairement à Microsoft) les systèmes POSIX peuvent relier des cibles mono et multi-thread en une seule application sans problème. Compte tenu de la poussée d'aujourd'hui vers multi-core et multi-thread, Est-il nécessaire dans une balise grande entreprise pour établir ce qui suit pour identifier « unique » et « multi-thread » cibles compilés?

  t       (single-threaded or multi-threaded)  *(??needed??)*

... et avons-nous manqué toute autre collision cible, comme avec la compilation et sans-STL (sur C ++)?

En aparté, Microsoft a des conventions de nommage bibliothèque: http://msdn.microsoft.com/en -us / bibliothèque / aa270400 (v = vs.60) .aspx et their les conventions de nommage DLL à: http: // msdn .microsoft.com / fr-fr / bibliothèque / aa270964 (v = vs.60) .aspx

Une question similaire sur le SO il y a un an qui ne parlait pas de filetage et ne faisaient pas référence aux conventions Microsoft sont disponibles à:

scroll top