2013-03-19 3 views
1

Visual Studio 2010을 사용하는 C++ 다중 플랫폼 프로젝트로 작업하고 있습니다. 모든 플랫폼간에 코드 공유 부분이 있지만 각 부분에 큰 부분이 있습니다. #if def를 사용하여 코드 유지 관리가 매우 복잡해지고 코드가 복잡해지고 일부 정의가 켜지거나 꺼진 상태에서 코드가 컴파일되지 않는 등의 문제가 발생합니다.C++ 멀티 플랫폼 프로젝트 용 도구

플랫폼 관련 코드를 숨기거나 다른 켜기/끄기 설정, 데이터 유형 확인 등을 사용하여 멀티 플랫폼 프로젝트를 개발하는 데 도움이되는 비주얼 스튜디오 용 플러그인 또는 도구가 있습니까? 하나는 제안

+0

'#if kFeatureFoo' 대신'if (kFeatureFoo)'를 사용하면 컴파일러가 코드가 유효한지 C++인지 확인해야하며 제거가 최적화 프로그램에서만 수행된다는 것을 의미합니다 (연결할 수없는 코드 제거는 다음과 같습니다). – MSalters

답변

1

이있는 경우

나는이 감사 없을 것 더 "도구"비주얼 스튜디오 자체보다 더. 다른 프로젝트에 코드를 구분하십시오. 공통 코드 프로젝트 및 각 플랫폼에 대한 프로젝트 내가 VS에 대한 이러한 플러그인 모르는

1. Add reference to common project in all platform-dependent projects (so common project is compiled before platform project). 
2. Add common project base to the common include directories of each target project. 

enter image description here

3

하지만 기본적으로 Windows 전용 IDE 이후, 나는 어떤가 의심 :에

는 것을 잊지 마십시오. (물론 나는 틀릴 수도 있습니다)

좋은 크로스 플랫폼 빌드 시스템을 찾고 있다면 CMake을 찾으십시오. 그것은 강력하고, 쉽게 데리러 수 있으며 거의 ​​모든 인기있는 IDE/툴체인 (비주얼 스튜디오 솔루션, 이클립스 프로젝트, MinGW Makefiles, GNU Makefiles 등)에 대한 빌드 파일을 생성 할 수 있습니다.

큰 프로젝트의 크로스 플랫폼 개발을 쉽게 만듭니다!

+0

글쎄, 당신은 cMake에 대한 나의 upvote를 얻는다. 그러나 정말로 산들 바람이 아니다 ;-) – Najzero

+0

내 생각에 그것은 실제로 견고한 역풍이 될 것이지만 내 생각에 수동 cross- 플랫폼 개발 ;) – Zultar

+0

나는 CMake도 좋습니다. 그것은 여러 플랫폼, 여러 OS 및 여러 컴파일러에 적합합니다. 필자는 64 비트 윈도우에서 여러 버전의 Visual Studio를 가장 많이 사용하지만, CMake 구성 파일을 거의 변경하지 않고 리눅스에 내 응용 프로그램을 구축했습니다. 그리고 예 CMake에는 정의를 관리하는 기능이 있습니다. – drescherjm

2

Qt 프레임 워크로 전환하면 대부분의 플랫폼 종속 코드를 제거 할 수 있습니다. Qt 애드온과 함께 VS를 계속 사용하고 Qt의 플랫폼 추상화를 사용하면 (거의) 동일한 코드 기반을 가진 여러 플랫폼을 타겟팅 할 수 있습니다. 당신은 매우 저렴한 플랫폼 지원과 휴대 얻을 :

  • 윈도우를
  • 리눅스
  • BB10
  • (Qt는 너무 BB10에 기본입니다)
  • 맥 OS
  • (Qt는 KDE와 우분투의 향후 릴리스 출신이다) 리눅스
  • 안드로이드 (오는 다음 달)
  • 아이폰 OS (다음 달 너무)
  • JOLL 내장 일관성 덜 추한 어색한 -
  • 타 이젠

API는 또한 더 나은 IMO입니다. 또한 QML (접착제 코드 및 값 바인딩을 위해 JS를 사용하는 C++ 구성 요소의 응용 프로그램을 빌드하기위한 JSON 스타일 마크 업)은 생산성을 크게 높일 수 있습니다 (과장하지 않고 최대 10 배). Qt 툴체인은 다른 키트 (라이브러리 버전 컴파일러와 플랫폼의 조합)와 멀티 플랫폼 크로스 컴파일을 지원합니다.