2013-06-07 4 views
1

우분투 13.04에 Qt Creator 2.7.0을 사용하고 있습니다.자체 제작 라이브러리를 유지 관리하는 방법은 무엇입니까?

저는 최근에 라이브러리를 사용한다는 생각에 부딪 혔습니다. 그리고 그들은 완전히 새로운 것이 었습니다. 보시다시피, 나는 Programming라는 폴더 내 모든 프로젝트가

LIBS += -L<lib's dir> -l<lib's name> 
INCLUDEPATH += <headers' dir> 

// for example: 
LIBS += -L$$PWD/../MyLib/release/ -lMyLib 
INCLUDEPATH += $$PWD/../MyLib/src/ 

합니다 (.. : 난 그냥 내 자신의 라이브러리를 사용하여 내 응용 프로그램의 .pro 파일에 다음을 가질 필요가 있다고 생각했습니다 이 경우) 내 프로젝트에 각각 .pro.pro.user 개의 파일이 루트 디렉토리에 있으며 서브 파일 /src의 소스 파일과 다른 서브 폴더 /release의 소스 파일이 있습니다.

Programming 
    MyLib 
     MyLib.pro 
     MyLib.pro.user 
     src 
     myclass.h 
     myclass.cpp 
     release 
     libMyLib.a 
     Makefile 
     myclass.o 
    MyApp 
     MyApp.pro 
     MyApp.pro.user 
     src 
     main.cpp 
     release 
     main.o 
     Makefile 
     MyApp 

그러나, 나는 폴더 Programming/libs/를 생성하고, 그 libs 폴더 안에 libMyLib.amyclass.h 파일을 추가 할 수 있다고 생각 :

그래서,이 같은 내 Programming 폴더 모습입니다. 내 라이브러리의 모든 동일한 기능을 수행 할 것이며, 나는 항상이처럼 그들을 포함 할 수있다 :

LIBS += -L$$PWD/../lib/ -lMyLib 
INCLUDEPATH += $$PWD/../lib/ 

문제는, 내 컴퓨터에 저장된 모든 라이브러리와 libs 폴더의 경로를 포함 얻을 것 특히 서로 다른 라이브러리에 같은 이름의 헤더가 두 개있는 경우 혼란에 빠질 수 있습니다.

저는 라이브러리를 사용하는 데있어서 새로운 점이 있습니다. 컴퓨터에 어떻게 배치해야하는지에 대한 일반적인 해결책과이를 프로젝트에 포함시키는 방법이 있습니까?

답변

2

당신은 부스트와 같은 라이브러리를 모방하고이 같은 디렉토리 트리 할 수 ​​:

MyLib 
    build 
     Makefile, .pro or .sln file here 
    lib 
     MyLib 
      // your .so/.a here 
    include 
     MyLib 
      // your .h here 
    src 
      // your .cpp here 
    CMake or qmake file here 

당신이 (build/에서) 아웃 - 오브 - 소스 빌드 트리를이 방법으로 바이너리 파일이 혼합되지 않도록를 소스 파일과 함께.

install 빌드 대상을 정의 할 수 있기 때문에 및 include/ 디렉토리가 편리합니다. 당신이 다음

make install 

를 입력하면 그것은 usr/local/libuser/local/include 모든 것을 복사합니다 그래서 당신의 앱은 단순히 #include <MyLib/some_header.h>을 할 수 있으며, (당신이 당신의 시스템 전체 경로에 위치에 모든 것을 복사하기 때문에) 당신은 당신의 라이브러리 바이너리에 직접 연결 할 수있는 . 또한 MyLib 하위 디렉토리에 래핑했기 때문에 이름 충돌의 위험이 없습니다.

관련 문제