Dans un environnement de développement intégré (IDE), une collection de fichiers source alimentent en entrée un outil de génération pour produire une sortie utilisable. La sortie peut être constituée d'objets intermédiaires, de bibliothèques, d'exécutables ou, selon la complexité et le type de projet, d'une combinaisons de ces éléments. Historiquement, la sortie générée résultante a été conçue pour être utilisée sur le même poste de travail que l'environnement de développement intégré ; cependant, certains environnements de développement modernes permettent aux utilisateurs de produire une sortie qui s'exécute sur des systèmes distants.
Dans un environnement de développement intégré, un projet peut cibler un système distant de différentes façons. Une approche consiste à utiliser un compilateur croisé ; c'est le cas quand l'outil de génération utilisé produit une sortie conçue pour être utilisée sur une plateforme autre que celle où a lieu la génération. Certains langages, tels que Java, produisent des sorties de génération qui peuvent être exécutées sur toutes les plateformes : comme dans l'approche des compilateurs croisés, l'outil de génération local est donc suffisant pour produire la sortie correcte. Très peu de langages de programmation étant neutres par rapport à la plateforme comme l'est Java, il n'est pas facile de trouver des compilateurs croisés pour une combinaison donnée langage/plateforme et, sans dispositif distant supplémentaire, ces deux approches sont limitées car elles ne délivrent pas les résultats de la génération à un ordinateur distant ciblé.
Une approche différente consiste à produire des générations pour les exécuter sur le système cible et non pas sur le poste de travail où l'environnement de développement intégré est exécuté. Pour cela, le code source doit être disponible pour une génération sur l'hôte distant. La source doit être développée à distance ou bien le code source du projet local doit être synchronisé sur le système distant. Un environnement de développement, tel que IBM® Rational Developer for Power Systems Software, prend en charge le développement distant direct (c'est-à-dire via un montage ou le système de fichiers Eclipse distant) et propose aussi la possibilité d'un mécanisme d'insertion/extraction pour transférer les fichiers entre un projet local et un hôte distant. Si la possibilité de cibler un hôte et une plateforme distants particuliers depuis un projet est pratique, tout le potentiel d'un développement distant n'a pas encore été réalisé avec la prise en charge d'un développement distant multicontexte. De nombreux projets de développement sont destinés à fonctionner sur différentes plateformes, et d'autres à s'exécuter en mode distribué sur plusieurs ordinateurs à la fois. Il n'est pas rare pour les développeurs de produire des générations à la fois débogables et optimisées, ou de produire des générations qui ont d'autres propriétés uniques sur le même ordinateurs. Le développement distant multicontexte maintenant disponible dans IBM Rational Developer for Power Systems Software permet à un même projet ou à d'autres types de ressources locales d'un environnement de développement intégré de cibler plusieurs environnements, plateformes et emplacements de façon transparente et simultanée.