2012-05-14 3 views
3

C# .NET 및 Visual Studio 배경 (및 일부 Objective-C/XCode)에서 C++을 처음 사용합니다.IDE에서 작동하는 C++ 코드 작성 방법은 무엇입니까?

크로스 플랫폼 (Windows, OS X, Linux) 응용 프로그램을 C++로 작성하고 싶습니다. 내 Mac에서 TextMate를 시작하고 Windows에서 메모장을 시작하고 커맨드 라인/터미널에서 g ++를 사용하여 코드를 컴파일하여 해당 플랫폼에 실행 파일을 빌드합니다. 내가 IDE (즉 VC++, 엑스 코드이클립스)를 사용하기 시작했을 때

나는 혼란 얻었다. 나는 세 가지를 모두 시도해보고 코드를 붙여 넣기 전에 프로젝트를 만들었다. 하나의 IDE에서 편집을 시작하면 다른 플랫폼에서 컴파일 할 코드를 얻는 방법을 모르겠습니다.

예를 들어 클래스 파일이있는 경우 - foo.cpp입니다. Eclipse에서는 foo.cpp (그 안에 foo.h, foo::foo()) 및 별도의 foo.h 헤더 파일 (그 안에 FOO_H_ 파일 등)을 생성합니다. Xcode에서는 Foo const main.cppfoo.l 폴더를 생성합니다. - 그게 전부입니다. 차이점은 무엇입니까?

비록 C++ 코드가 해당 플랫폼에서 컴파일되면 플랫폼 특정 실행 파일을 생성하는 C++ 코드 일 뿐이지 만. (예 : Mac에서 컴파일, Mac 실행 파일이되고, Windows에서 컴파일하면 Windows 실행 파일이됩니다.)

일단 내가 IDE를 사용하기 시작하면 C + + 코드가 자동으로 변환되지 않는 것 같습니다.이 모든 자동 생성 파일은 내가 이해할 수 없기 때문입니다. 저는 Xcode, Eclipse 및 Visual Studio에 대한 설명서를 동시에 읽으려고합니다. 그러면 혼란 스럽습니다. 난 그냥 C를 쓰고 싶어요 ++ ... 나는 또한 C를 선택 ++와 책에하는 스트로브 스트 룹의 고전 텍스트를 다음입니다

, 헤더 또는 .h 또는 _H_ 파일의 소스처럼 아무것도 왜 이러한 모든 파일로 언급되지 않았다 생성되었습니다.

메모장/텍스트 메이트 + G ++ 컴파일러 외에, 크로스 플랫폼이 될 수있는 순수한 휴대용 C++ 프로그램을 어떻게 작성할 수 있습니까? 아니면 가능합니까?

+2

컴파일 단위간에 클래스 정의를 공유하고 다른 소비자에게 라이브러리 인터페이스를 공유하려면 헤더 파일이 필요합니다. 하나의 파일에서 모든 작업을 수행하는 경우에는 필요하지 않습니다. 다른 프로젝트 템플릿은 해당 플랫폼에 유용 할 수 있습니다 (예 : VC는 stdafx.h를 미리 컴파일 된 헤더로 사용하여 빌드 할 때 모든 Windows API 헤더를 포함하여 속도를 높입니다. 걱정되는 경우 템플릿 프로젝트 생성 파일을 버리고 빈 파일로 시작하십시오. – Rup

+1

그리고 'FOO_H_' 등은 [include guard] (http://en.wikipedia.org/wiki/Include_guard)입니다. 동일한 컴파일 과정에서 헤더 파일을 두 번 포함하면 헤더 파일을 두 번 다시 구문 분석하는 것을 피하는 메커니즘입니다 다른 루트 등을 통해 유닛. – Rup

답변

2

기본 Foo라는 C++ 클래스 (= 가장 일반적으로 사용되는) 파일 구조 Foo의 클래스 정의를 포함 foo.h라는 헤더 파일로 구성되며, Foo의 방법의 정의를 포함하는 foo.cpp.

흔히 모든 헤더 파일은 include이라는 별도의 폴더에 저장됩니다.

그래서 일반적인 접근 방식은 하나 개 이상의 IDE에 사용할 수있는 동일한 파일/폴더 구조를 가지고있다 :

  • 프로젝트 내부 (수동 예 include, srcmake 폴더를 폴더 구조를 만들 폴더 MyProject, IDE 용 프로젝트 파일은 make로, .h 파일은 include로, .cpp 파일은 src로)
  • 탐색기/찾기/검색기를 사용하여 수동으로 클래스의 .h 및 .cpp 파일을 만듭니다.
  • "기존 파일 추가"또는 이와 비슷한 파일을 IDE의 프로젝트 파일에 추가하십시오.
+0

+1. 단지 의견 : 대부분의 IDE (예 : Eclipse, MSVC)에서는 .cpp 및 .h 파일을 만들 수 있으며 폴더를 지정할 수 있으므로 탐색기를 사용하여 소스 파일을 만들 필요가 없습니다. 또한 이클립스는 기본적으로 프로젝트 폴더를 파일 시스템 구조와 동기화 된 상태로 유지하므로 IDE를 사용하여 디렉토리를 만들 수 있습니다 (프로젝트에 하위 폴더를 만듭니다). – user396672

1

사용 CMake 또는 다른 메타 buildsystem 사용 부스트와 Qt를 원하는 RUP를 지적으로는

  • 는 Visual Studio를 위해, 하나는 "빈 프로젝트"사전 설정을 사용한다, 또는 당신이 그나마 일부 헤더 파일을 추가합니다 가능성만큼 플랫폼을 추상화합니다.

    CMake는 대부분의 IDE 용 프로젝트 파일을 생성 할 수 있습니다. 즉, 플랫폼과 IDE를 전환 할 때 CMake가 해당 플랫폼에서 사용하는 IDE에 대한 새 프로젝트 파일을 생성하도록 지시합니다.

    Windows에서 플랫폼 이상 코드를 쉽게 얻을 수있는 Linux와 Mac은 QtCreator를 IDE로 사용하는 것이지만, 좋은 자습서도 많이 있습니다. http://qt.nokia.com/downloads

  • +1

    OP는 이미 슬프게도 혼란스럽고 "CMake", "Boost 사용 "및"Qt "... huarrrrr – KMC

    +0

    Boost 및 Qt는 해당 플랫폼을 사용하면 플랫폼 별 세부 정보를 숨길 수있는 라이브러리입니다. 이것은 코드에서 #ifdef _WIN32 ....를 쓰지 않아도된다는 것을 의미합니다. –

    +0

    많은 새로운 것들로 홍수에 빠져서 죄송합니다. C++을 배우고 있고 그 사실을 알아 차렸을 것입니다. 업데이트 된 답변 및 IDE에 대한 링크로 인해 플랫폼에 이상적인 방식으로 코드를 작성하고 모든 IDE 플랫폼에 동일한 IDE가 있으므로 한 가지만 배우면됩니다. –

    1

    왜 모두 1 IDE를 사용해야합니까? Eclipse가 크로스 플랫폼 IDE 임

    +1

    맞습니다. 프로젝트를 광범위하게 컴파일하려는 경우 여러 IDE 만 지원하면됩니다. 직접 컴파일하려면 하나의 IDE에서 여러 컴파일러를 사용할 수 있습니다. –

    관련 문제