문제

프로젝트/솔루션 설정을 사용하는 대신 Visual Studio C++ 빌드(VS 2005에서)용 메이크파일을 사용해 본 경험이 있는 사람이 있습니까?우리의 경우 프로젝트/솔루션이 작동하는 방식은 직관적이지 않으며 특정 컴파일 시간 플래그를 사용하여 빌드를 조정하려고 하면 구성 폭발로 이어집니다.

Unix에서는 사용자 설정(또는 기타 구성 설정)에 의해 기본 옵션이 무시되는 makefile을 설정하는 것이 매우 쉽습니다.그러나 Visual Studio에서는 이러한 유형의 작업을 수행하는 것이 어려워 보입니다.

예를 들어, 3개의 서로 다른 플랫폼용으로 빌드해야 하는 프로젝트가 있습니다.각 플랫폼에는 여러 가지 구성(예: 디버그, 릴리스 등)이 있을 수 있습니다.새로 형성된 프로젝트에 대한 나의 목표 중 하나는 모든 플랫폼 빌드가 함께 작동할 수 있는 솔루션을 갖는 것입니다. 이렇게 하면 단지 코드를 테스트하기 위해 3가지 다른 솔루션을 열 필요가 없기 때문에 코드 변경 사항을 더 쉽게 빌드하고 테스트할 수 있습니다.그러나 Visual Studio에는 3 * (기본 구성 수) 구성이 필요합니다.즉.PC 디버그, X360 디버그, PS3 디버그 등

여기서는 makefile 솔루션이 훨씬 더 나은 것 같습니다.일부 기본 배치 파일이나 스크립트로 래핑하면 구성 폭발을 최소한으로 유지하고 수행해야 하는 모든 다양한 빌드에 대해 작은 파일 세트만 유지하는 것이 쉽습니다.

그러나 저는 Visual Studio에서 makefile을 사용한 경험이 없으며 다른 사람들이 공유할 수 있는 경험이나 문제가 있는지 알고 싶습니다.

감사해요.

(C++ 빌드임을 언급하기 위해 편집된 게시물)

도움이 되었습니까?

해결책

나는 주로 프로젝트 설정의 위치를 ​​통합하는 것과 관련된 대규모 프로젝트의 makefile에서 몇 가지 이점을 발견했습니다.소스 파일 목록, 포함 경로, 전처리기 정의 등이 모두 makefile 또는 기타 빌드 구성 파일에 있는 경우 관리하는 것이 다소 쉽습니다.여러 구성에서 포함 경로를 추가한다는 것은 Visual Studio의 성가신 프로젝트 속성을 통해 모든 구성을 수동으로 업데이트해야 함을 의미하며, 이는 프로젝트 크기가 커짐에 따라 상당히 지루해질 수 있습니다.

픽셀/버텍스 셰이더를 컴파일해야 하거나 기본 VS 지원 없이 다른 언어로 코드를 작성해야 하는 경우와 같이 사용자 정의 빌드 도구를 많이 사용하는 프로젝트도 관리하기가 더 쉬울 수 있습니다.

그러나 각 구성에 대한 빌드 도구 호출을 차별화해야 하기 때문에 여전히 다양한 프로젝트 구성이 필요합니다(예:만들기 위해 다른 명령줄 옵션을 전달합니다.)

떠오르는 즉각적인 단점:

  • 느린 빌드:VS는 외부 도구를 호출하는 데 특히 빠르지 않으며, 애초에 프로젝트를 빌드해야 하는지 여부를 파악하는 것조차 빠르지 않습니다.
  • 어색한 프로젝트 간 종속성:종속자가 기본 프로젝트를 빌드하도록 설정하는 것은 까다롭고 올바른 순서로 빌드되도록 하는 것은 더 까다롭습니다.저는 SCons가 이 작업을 수행하도록 하는 데 약간의 성공을 거두었지만, 잘 작동하는 것은 항상 어려운 일입니다.
  • 일부 유용한 IDE 기능 손실:편집 및 계속이 메인입니다!

즉, 프로젝트 구성을 관리하는 데 소요되는 시간은 줄어들지만 Visual Studio가 제대로 작동하도록 유도하는 데 더 많은 시간을 할애할 수 있습니다.

다른 팁

Visual Studio는 그 위에 구축되고 있습니다. MSBuild 구성 파일.*proj 및 *sln 파일을 makefile로 간주할 수 있습니다.이를 통해 빌드 프로세스를 완전히 사용자 정의할 수 있습니다.

기술적으로는 가능하지만 Visual Studio 내에서는 그다지 친숙한 솔루션은 아닙니다.그것은 내내 당신과 싸울 것입니다.

꼭 살펴보시길 추천드려요 낸트.기본적으로 필요한 모든 작업을 수행할 수 있는 매우 강력한 빌드 시스템입니다.

우리의 NAnt 스크립트는 모든 빌드에서 이 작업을 수행합니다.

  1. 데이터베이스를 최신 버전으로 마이그레이션
  2. 데이터베이스에서 C# 엔터티 생성
  3. 우리의 "마스터" 솔루션에서 모든 프로젝트를 컴파일하세요
  4. 모든 단위 테스트 실행
  5. 모든 통합 테스트 실행

또한 우리의 빌드 서버는 이를 활용하여 Sandcastle 문서를 생성하는 작업을 1개 더 추가합니다.

XML이 마음에 들지 않으면 다음을 살펴보십시오. 갈퀴 (루비), 굽기/부빌드 시스템 (부) 또는 프사케 (파워셸)

nant를 사용하여 프로젝트를 개별적으로 빌드하여 솔루션을 대체할 수 있으며 1개의 코딩 솔루션이 있고 빌드 솔루션은 없습니다.

명심해야 할 한 가지는 vs 2005 이상의 솔루션과 csproj 파일이 msbuild 스크립트라는 것입니다.따라서 msbuild에 익숙해지면 기존 파일을 사용하여 vs를 더 쉽게 만들고 배포를 더 쉽게 만들 수 있습니다.

귀하가 설명하는 것과 유사한 설정이 있습니다.우리는 최소한 3가지 플랫폼을 지원하므로 CMake 다양한 Visual Studio 솔루션을 관리합니다.설정은 약간 고통스러울 수 있지만 문서와 몇 가지 튜토리얼을 읽는 것으로 요약됩니다.프로젝트 및 솔루션의 속성으로 이동하여 수행할 수 있는 거의 모든 작업을 수행할 수 있어야 합니다.세 가지 플랫폼 빌드를 모두 동일한 솔루션에서 함께 사용할 수 있는지 확실하지 않지만 다음을 사용할 수 있습니다. 크루즈 컨트롤 빌드를 관리하고 필요한 만큼 자주 테스트 스크립트를 실행합니다.

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