문제

Visual Studio IDE를 통해 개발하면서 GCC 컴파일러를 활용할 수 있는 방법이 있습니까?

우리 프로젝트는 크로스 플랫폼이므로 내 작업으로 인해 문제가 자주 발생합니다. 동료 표준을 준수하지 않는 코드를 체크인하고 있기 때문입니다(VS 컴파일러 때문일 수 있습니다!).

나는 여전히 MS 컴파일러를 사용하여 컴파일할 수 있기를 원하므로 디버깅 등을 계속할 수 있습니다. 스위치 다른 플랫폼에서 빌드가 중단되지 않도록 하기 위해 GCC를 사용하여 컴파일합니다.

이것이 가능한가?

도움이 되었습니까?

해결책

제가 제안하려는 내용에는 여전히 makefile이 필요하므로 이전 답변의 조언을 부분적으로 반복하고 있습니다.또는 앞서 언급한 것처럼 이미 makefile이 있을 수도 있습니다. 이 경우 제가 설명하려는 작업을 수행하는 데 필요한 단계가 훨씬 더 적습니다.

코드에서 make 또는 g++를 호출하기 위한 특정 Windows 명령줄 명령을 알고 나면 Visual Studio 프로젝트에서 "빌드 전 이벤트"를 만듭니다.("프로젝트 속성 >> 구성 속성 >> 빌드 이벤트 >> 빌드 전 이벤트").

사전 빌드 이벤트는 bat 파일 스크립트 또는 컴퓨터의 다른 스크립트를 호출할 수 있으며 해당 스크립트는 오류 코드를 반환할 수 있습니다.기본적으로 "스크립트 OK" 또는 "스크립트 실패"는 스크립트가 Visual Studio에 전달할 수 있는 통신의 정도입니다.

스크립트는 모든 Visual Studio 환경 변수(예: $(InputDir), $(ProjectDir), $(SolutionName) 등)를 자동으로 표시하지 않지만 스크립트 호출 방법을 지정할 때 해당 변수를 사용할 수 있습니다.즉, 해당 값을 스크립트에 인수로 전달할 수 있습니다.

Visual Studio에서 빌드할 때마다 사전 빌드 이벤트가 먼저 코드에서 make/g++를 실행하도록 설정합니다.귀하의 스크립트(make/g++를 호출하는 스크립트)가 문제를 감지하면 스크립트는 오류를 반환하고 빌드는 즉시 중지될 수 있습니다.스크립트는 stdout 또는 stderr로 인쇄할 수 있으며 해당 출력은 Visual Studio 빌드 출력 창(일반적으로 "========== 빌드:3개 성공, 0개 실패").

스크립트를 인쇄할 수 있습니다.

"빌드 실패, 이식할 수 없는 코드 감지, make/g++에서 다음을 반환했습니다:........"

이렇게 하면 Visual Studio에서 명령줄로 주기적으로 전환하는 것을 기억할 필요가 없습니다.빌드할 때마다 자동으로 수행됩니다.

다른 팁

확실히 이를 수행할 수 있는 방법이 있습니다. 이것이 우리가 Sony의 툴체인(gcc 기반)을 사용하여 PS3용으로 개발하는 방법입니다.그것이 어떻게 작동하는지 정확히 모르겠지만 VS에 매우 원활하게 통합됩니다.

내 생각에 당신이 해야 할 일은 makefile을 사용하여 빌드하도록 설정하거나(아마 가장 쉬울 것임) VC 인수를 gcc 인수로 변환하는 래퍼 프로그램을 작성하는 것입니다.또한 VS 형식의 오류/경고 출력을 원하는 경우(클릭하여 편집기에서 해당 파일/라인을 가져올 수 있음) 출력을 변환할 무언가가 필요합니다.

이 내용이 도움이 될 수 있습니다. 관련된 토론 GCC 도구의 WRS/VXWORKS 버전과 함께 VS 사용 정보 :

특히 주의할 점은 거기에 링크된 프로그램 오류 출력을 변환합니다.

gcc의 명령줄 옵션이 VS와 매우 다르기 때문에 간단한 스위치는 없다고 생각합니다.어쨌든, 빌드 시스템은 아마도 컴파일이 성공하기 위해 설정해야 하는 많은 전처리기 정의 및 빌드 변수를 설정하기 때문에 컴파일러를 실행하는 것만으로는 충분하지 않습니다.

동료가 Unix에서 작업하고 있다면 어쨌든 make, scons 또는 cmake 기반 빌드 시스템을 갖고 있을 것입니다.당신이 사용할 수있는 시그윈 gcc, make, flex, bison 및 기타 모든 Unix 기능을 포함하여 Windows에 표준 Unix 툴체인을 설치합니다.scons 및 cmake의 기본 버전이 있지만 VS를 사용하려고 시도하므로 도움이 되지 않습니다.나는 Cygwin을 통해 설치를 시도하지 않았으며 이로 인해 gcc가 강제로 실행되는지 확인했지만 이는 귀하와 관련이 없을 수도 있습니다.

VS 컴파일러를 사용하는 make 시스템을 만드는 것은 가능하지만 고통스럽습니다.그리고 다른 질문입니다.;)

그런 다음 특별한 빌드 단계를 사용하여 VS 내부에서 gcc 컴파일을 실행할 수 있습니다.별도의 빌드 대상(예: 디버그 및 릴리스)을 갖는 것이 더 좋으며 프로젝트 파일에서 이를 생성할 수 있지만(그냥 ASCII 파일이므로 확인하십시오), VS 사용자로는 충분하지 않습니다. 그게 얼마나 쉬운 일인지 알아요.최신 상태로 유지하는 것은 약간 힘들 수 있습니다. 자동으로 생성되도록 스크립트를 작성하는 것이 좋습니다.

gcc로 컴파일하기 위해 별도의 makefile을 유지해야 했습니다.Make 학습과 관련된 초기 비용이 있지만 코드에 대한 친밀한 지식과 VS C++와 gcc의 차이점을 통해 이점을 얻을 수 있습니다.이 작업을 수행할 당시에는 VC 6을 사용하고 있었으므로 이제 VS 2005에 더 나은 방법이 있을 수 있습니다.

Cygwin을 사용해 보세요. 모든 Makefile을 올바르게 설정했다면 언제든지 VS와 GCC 모두에서 컴파일을 시도할 수 있습니다.

프로젝트 파일이 얼마나 복잡한지에 따라 다릅니다.

cygwin과 같은 gcc 환경이 반드시 필요합니다.

  • 소규모 프로젝트 또는 단일 파일 컴파일의 경우 사용자 정의 빌드 도구(규칙 파일)를 사용할 수 있습니다.

  • 대규모 프로젝트/솔루션의 경우 vcproj/sln 파일에서 autotools 구성/makefile을 자동 생성하고 이를 IDE 내에서 컴파일합니다.gcc의 소스 파일/경고 및 오류 줄은 IDE에 해당하는 항목으로 변환됩니다(출력 창에서 클릭 가능).

크로스 플랫폼이기 때문에 이미 makefile을 사용하여 프로젝트를 빌드하고 있을 것입니다.빌드가 MSVC용인지 GCC용인지 여부를 나타내기 위해 다양한 매개변수를 사용하여 makefile을 시작하는 다양한 프로젝트 구성을 사용하여 VS 프로젝트를 makefile 프로젝트로 만드세요.

MSVC 메이크파일 빌드가 디버그 파일(PDB)을 빌드할 수 있다면 VS 디버거도 원활하게 작동합니다.

그런 다음 Visual Studio 내에서 GCC를 사용하여 빌드하는 것은 도구 모음에서 'GCC' 구성 드롭다운을 선택하는 것만큼 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top