2009-06-09 3 views
1

그래서 VS2008 C# Add-In을 작성하여 C++ 프로젝트에서 AspectC++을 자동화했습니다. C++ 소스 파일 (현재 aspect로 짜여 있음)을 생성하고 있지만, 미리 빌드 단계의 일부로 컴파일하는 방법을 알 수는 없습니다. IDTExtensibility2, EnvDTE90 또는 VslangProj90 네임 스페이스 내에 새로운 소스를 지정하는 편리한 방법이 있습니까? 나는 VCProject와 VCProjectEngine 인터페이스를 사용하고 'ExcludedFromBuild = false'플래그를 통해 프로그램에 포함시키기 위해 파일을 표시하려고 시도했다. 불운.방법 : 생성 된 C++ 소스 파일을 컴파일 하시겠습니까?

상업용 AspectC++ Add-In은 cl.exe를 무시하고 aC++. exe aspect 컴파일러를 사용하여 cl.exe를 우회합니다. 따라서 실제 컴파일러를 위해 생성 된 소스 파일을 준비하기 전에 자신의 cl.exe를 호출하여 aC++. exe를 호출해야합니다. 그건 나에게 해킹처럼 보이지만, 더 좋은 방법은 없을까? 나는이 하나에 정말 난처한데, 어떤 도움을 주시면 감사하겠습니다.

+0

호수로, 이번에는이 프로젝트를 마칠 수 있습니다. 프리웨어 또는 오픈 소스 인 경우이 추가 기능을 제공 해주시겠습니까? Visual Studio에서 AspectC++을 사용하여 순수한 임베디드 C 프로젝트를 추적해야합니다. 귀하의 추가 기능이 나를 크게 도울 수 있습니다. 감사. – arefinsami

답변

1

생성 한 파일을 빌드 한 프로젝트에 포함시키지 않는 이유는 무엇입니까?

+0

수동으로 실행하면 작동하지만 Pre-Build 이벤트 내에서는 작동하지 않습니다. 내가 말할 수있는 한 'ExcludedFromBuild = false'메소드 만이 파일이 현재 프로젝트에 포함되어 있는지 확인하는 유일한 방법입니다. VCProject 인터페이스의 .AddFile() 함수는 생성 된 파일이 실제로 프로젝트의 일부임을 나타냅니다. 그러나 어떤 이유로 인해 컴파일되지 않았습니다. 컴파일 할 파일이 미리 빌드 단계 전에 결정되었다고 생각하고 있습니다 ... – Lake

+0

실제로 테스트를 포함하여 컴파일 및 포함 할 수 있습니다 ... 여전히 해킹이지만, 무엇이든간에 ... – Lake

+0

명확성을 위해, VCProject와 Project 인터페이스가 반드시 같지 않다는 것을 알게되었습니다. Project (또는 ProjectItem 대신) 인터페이스를 사용하면 빌드에서 항목을 제외 할 수 있지만 VCProject는 일반적으로 제외하지 않습니다. 이것은 버그 일 수 있습니다. 또한 플랫폼이 여러 개인 경우 ActiveConfiguration이 도움이되지 않습니다 (플랫폼이 아닌 구성 이름). 따라서이 방법을 다른 방법으로 지정해야합니다. 그렇지 않으면 잘못된 구성에서 항목이 제외됩니다. – Lake

관련 문제