1

ubuntu 13.04でQt Creator 2.7.0を使用しています。

私は最近、ライブラリを使用するというアイデアに出くわしましたが、それらは私にとってまったく新しいものです。.pro独自のライブラリを使用するには、アプリケーションのファイルに次のものが必要であると考えました。

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

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

ご覧のとおり、私はすべてのプロジェクトをProgramming(..この場合は) という名前のフォルダーに入れています。各プロジェクトのルートにはファイルが.proあり.pro.user、サブ フォルダーにはソース ファイルがあり、/src別のサブ フォルダーにはリリースがあります/release

だから、これは私のProgrammingフォルダがどのように見えるかです:

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/を追加できると考えました。すべてのライブラリに対して同じことを行うと、次のようにいつでも含めることができます。libMyLib.amyclass.hlibs

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

問題は、コンピューターに保存されているすべてのライブラリのインクルード パスを取得し、libsフォルダーが混乱することです。特に、異なるライブラリに同じ名前のヘッダーが 2 つある場合はそうです。

私はライブラリの使用に本当に慣れていません。ライブラリをコンピュータに配置する方法と、それらをプロジェクトに含める方法に関する一般的な解決策はありますか?

4

1 に答える 1

2

Boost のようなライブラリを模倣して、次のようなディレクトリ ツリーを作成できます。

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/このようにして、バイナリ ファイルがソース ファイルと混同されないように、ソース外のビルド ツリー ( を参照) が作成されます。

およびディレクトリはlib/、ビルド ターゲットinclude/を定義できるので便利です。install次に入力すると

 make install

アプリが簡単に実行できるようにすべてをコピーusr/local/libし、ライブラリバイナリに直接リンクできるようにします(システム全体のパス内の場所にすべてをコピーしたため). また、独自の MyLib サブディレクトリ内にラップするため、名前が衝突する危険もありません。user/local/include#include <MyLib/some_header.h>

于 2013-06-07T14:04:39.383 に答える