2009-06-09 9 views
1

alors j'écris un Add-In VS2008 C# pour automatiser le tissage AspectC++ dans les projets C++. Je génère les fichiers source C++ (maintenant tissés avec des aspects), mais je ne peux pas comprendre comment les compiler dans le cadre de l'étape de pré-construction. Existe-t-il un moyen pratique de spécifier une nouvelle source dans les espaces de noms IDTExtensibility2, EnvDTE90 ou VslangProj90? J'ai essayé d'utiliser les interfaces VCProject et VCProjectEngine ainsi que de marquer les fichiers pour l'inclusion par programmation via l'indicateur 'ExcludedFromBuild = false'. Pas de chance.Comment: compiler des fichiers source C++ générés?

J'ai remarqué que le complément AspectC++ commercial contourne cl.exe en mettant un wrapper autour de lui et le compilateur d'aspect aC++ .exe. Ils doivent donc appeler leur propre fichier cl.exe, qui appelle ensuite aC++. Exe avant de préparer les fichiers sources générés pour le vrai compilateur. Cela me semble un hack, n'y a-t-il pas un meilleur moyen? Je suis vraiment perplexe sur celui-ci, toute aide serait appréciée.

+0

Lake, à ce moment peut-être avez-vous terminé ce projet. Voulez-vous me donner ce complément si c'est un freeware ou open source. J'ai besoin d'utiliser AspectC++ dans Visual Studio pour tracer un projet C embarqué pur. Votre complément pourrait m'aider grandement. Merci. – arefinsami

Répondre

1

Pourquoi ne pas simplement inclure le fichier généré dans le projet que vous construisez ensuite?

+0

Lorsque je le fais manuellement, cela fonctionne, mais pas dans l'événement de pré-construction. Pour autant que je sache, la méthode 'ExcludedFromBuild = false' est la seule à s'assurer que le fichier est maintenant inclus dans le projet. La fonction .AddFile() de l'interface VCProject indique que les fichiers générés font en effet partie du projet ... mais pour une raison quelconque, ils ne sont pas compilés. Je pense que les fichiers à compiler sont déterminés avant l'étape de pré-construction ... – Lake

+0

en fait avec quelques tests que je leur ai fait inclure et compiler ... c'est toujours un hack, mais peu importe ... – Lake

+0

Pour plus de clarté, J'ai appris depuis que les interfaces VCProject et Project ne sont pas nécessairement égales. L'interface Project (ou ProjectItem plutôt) vous permet d'exclure des éléments de la construction, mais le VCProject, en général, ne le fait pas. Cela peut être un bug. En outre, lorsque vous avez plusieurs plates-formes, ActiveConfiguration ne vous aide pas (il suffit de configurer le nom, pas la plate-forme). Vous devrez donc le spécifier d'une autre manière sinon vous exclurez les éléments de la mauvaise configuration. – Lake

Questions connexes