2013-03-29 2 views
1

나는 데이터 처리 라이브러리를 작성하기 시작했으며 프로젝트 및 라이브러리의 적절한 구조를 구축하는 것에 대해서는 매우 혼란 스럽다.C++ 프로젝트 및 라이브러리의 올바른 구조

말은 myfunclib 라이브러리에 저장된 함수 집합을 갖고 싶습니다. 클래스 선언 의 Myproj// myfunclib.cpp 포함 - - 클래스의 기능을 의 Myproj/SRC/functest.cpp - 테스트

의 Myproj// myfunclib.h을 포함한다 : 나의 현재 셋업이 (온라인 복수 추천에서 가져온)은 다음과 같습니다 파일을 확인하는 파일

우선 myproj 프로젝트에만 myfunc를 사용하는 경우 적절한 설정이라고 생각하지만 재사용하고 싶다고 말하면 - 각각의 cpp에 경로를 지정해야합니다. 파일을 사용하거나 여러 복사본을 저장할 수 있습니다.

둘째, 컴파일은 약간은 경우에 부피가 : 그것은 때마다 모든 물건을 입력 할 정상적인 연습을

g++ -I include include/myfunclib.cpp src/functest.cpp 

인가? 필요한 사용자 지정 라이브러리가 많은 경우 어떻게해야합니까? 그것들을 모두 별도로 저장하는 방법이 있습니까? 'myfunclib.h'로 간단히 포함하고 다시 컴파일하는 것에 대해 걱정하지 않으시겠습니까?

+0

구글'make'와'Makefile'입니다. – MatthewD

+0

대부분의 사람들은'make '나 IDE를 사용합니다.IDE를 사용하면 일반적으로 일반적인 검색 경로를 지정할 수 있지만 프로젝트별로 라이브러리를 선택해야합니다. – Dave

+0

vim과 명령 줄을 고수하려고합니다. 고마워. 고마워. 디렉토리 구조는 어떻습니까? – sashkello

답변

0

이 당신의 모든 종속성과 코드를 구축을 처리하는 메이크 파일을 사용하는 데 도움이

build - where all the built files will be stored 
app - these are the main apps (can also be split into include/src) 
include - includes files 
src - src files (compiled into objects and then linked with main compiled app) 
lib - any libs (usually 3rdparty libs , if any my src is compiled into a library it usually ends up in build/lib/target/...) 

희망을 시작할 때 내가 일반적으로 내 프로젝트의 디렉토리 구조를 유지하는 방법이다. Google은 구문이 매우 간단합니다. 명령 줄에서 "make"라고 말하면 모든 것이 빌드됩니다.

여기 좋은 튜토리얼 http://mrbook.org/tutorials/make/

0

원래 나 비트 몇 가지,

해당 템플릿 클래스 만 포함되어야 기억, 일반적으로 소스 구현은 오브젝트 파일로 정상 수준의 구현처럼을 구축하지 않아야 무엇 때문에 일반적으로 내가 내 모든 템플릿 구현을 넣어 include 디렉토리 내

include 파일과 소스 파일을 별도로 유지합니다. 소스 파일은 링크 용으로 오브젝트 파일로 컴파일해야하는 코드 (정의)를 포함하며 모든 선언, 인라인 함수 등을 포함합니다. 나에게 더 이해하기.

가끔은 내가 특정 모듈에 대한 모든 관련 헤더를 포함하는 헤더 파일을 가지고있을 것이며, 아마 머리글 파일은 내가 사용하고있는 모듈의 모든 주요 헤더를 포함한다.

또한 주석에 언급 된 것처럼 빌드 툴에 대해 스스로 소개하고 편안하게 해줄 필요가 있다면 프로젝트 내에서 의존성을 추적하는 데 도움이되며 대부분의 경우 의존성의 하위 집합 만 변경되면 전체 프로젝트를 다시 빌드하지 않아도됩니다. 시작 부분에 있지만 보람있는 학습입니다. make와 g ++를 사용하면 g ++로 작업 할 수있는 방법이 있습니다. -MM ... 모든 경우에 얼마나 잘 작동하는지 확실하지 않습니다.) 제가 프로젝트를 구성한 방법을 알고 있습니다. 빌드 프로세스에 대해 더 많이 배울수록 크게 달라졌고 프로젝트가 복잡해질수록 더 많은 결함이 생겼습니다.

이이 중 일부는

+0

한 가지 더 추가해야 할 것은 소스를 유지하고 파일을 별도로 포함하는 가장 좋은 이유입니다. 프로젝트를 라이브러리로 공유하려는 경우 라이브러리가 빌드되면 사용자는 라이브러리에 링크하고 헤더를 포함해야합니다 파일을 사용하는 경우 꽤 자주이 파일을 다른 위치에 복사한다는 의미이므로 번들로 포함 시키면 간단 해집니다. – vurentjie