9

私のプロジェクトには、すべてのターゲット マシンに存在しないバージョンの が必要なので、プロジェクトのソースzlibからビルドしたいと考えています。zlib次に、プロジェクトをコンパイルするときにリンクできるようにmake、プロジェクトを最初にビルドする必要があります。zlib

1 つの複雑な点は、実行する前に実行するzlib必要があることです。configuremake

ここからどこから始めればよいかさえわかりません。.proこのようなサードパーティ ライブラリ ソース コードをインポートするために Qt Creator に組み込まれている機能はありますか、それともカスタムファイルをコード化する必要がありますか?

プロジェクトを右クリックすると表示される [ライブラリの追加...] メニューを試しましたが、ライブラリが認識されません.pro。ファイルが存在しない可能性があります。.proFile -> New Project -> Import Existing Project でファイルを作成しようとしましたが、zlib一度configure実行するとコンパイルできますが、それでも.proファイルは生成されません。

おそらくサブディレクトリが役立つかもしれないと思い.proましたが、それがこの状況で正しいルートであるかどうかはわかりません.それは自分です。

のようなサードパーティ ライブラリのソース コードが与えられた場合、ソースzlibからライブラリをコンパイルしてプロジェクトで使用できるように、それを既存の Qt プロジェクトに統合するにはどうすればよいですか?

4

3 に答える 3

8

はい、そのためのプロジェクト ファイルを作成する必要があります。私のバージョンは、私がいくつかのプロジェクトで使用したものの下にあります。

zlib.pro

QT       -= core gui

TARGET = zlib
TEMPLATE = lib
# Use this for static zlib rather than the default dynamic
# CONFIG += staticlib
include(zlib.pri)

zlib.pri

HEADERS += \
    $$PWD/crc32.h \
    $$PWD/deflate.h \
    $$PWD/gzguts.h \
    $$PWD/inffast.h \
    $$PWD/inffixed.h \
    $$PWD/inflate.h \
    $$PWD/inftrees.h \
    $$PWD/trees.h \
    $$PWD/zconf.h \
    $$PWD/zlib.h \
    $$PWD/zutil.h

SOURCES += \
    $$PWD/adler32.c \
    $$PWD/compress.c \
    $$PWD/crc32.c \
    $$PWD/deflate.c \
    $$PWD/gzclose.c \
    $$PWD/gzlib.c \
    $$PWD/gzread.c \
    $$PWD/gzwrite.c \
    $$PWD/infback.c \
    $$PWD/inffast.c \
    $$PWD/inflate.c \
    $$PWD/inftrees.c \
    $$PWD/trees.c \
    $$PWD/uncompr.c \
    $$PWD/zutil.c

    INCLUDEPATH += $$PWD

次に、これを含むプロジェクト ファイルで、次のようなことができます。

main.pro

# CONFIG += order # If you wanna make sure about order. This is optional.

SUBDIRS += \
    zlib \
    ...

qmake をさらに高度に使いたい場合は、次のようにすることができます。

SUBDIRS += \
    src_zlib \
    src_mylib \
    ...

src_zlib.subdir = $$PWD/zlib
src_zlib.target = sub-zlib
src_zlib.depends =

src_mylib.subdir = $$PWD/mylib
src_mylib.target = sub-mylib
src_mylib.depends = src_zlib

このようにすると、順序セットに関係なく、依存関係をより適切に制御できます。たとえば、長期的には適切なメンテナンスに役立つように、エントリをアルファベット順に保持することもできます。

次に、サブプロジェクトのプロジェクト ファイル (.pro) に、zlib に依存する "foo" としましょう。

foo.pro

LIBS += -L$${PROJECTROOT}/$${SUBDIR_TO_ZLIB} -lz

# These lines are only option, and you do not necessarily need them.
# win32:LIBNAME = zlib.dll
# unix:LIBNAME = libzlib.so
# PRE_TARGETDEPS += $${PROJECTROOT}/$${BUILD_SUBDIR_LIBS}/$${LIBNAME}
于 2013-09-05T22:21:25.790 に答える
0

または、QT Creator を使用している場合は、"Project Settings" -> "Add Build Step" -> "Custom build step" を調べて、そこにスクリプト ファイルを追加してみてください。これは、lib を事前にビルドするのに役立ちます。あとは、それをプロジェクトにリンクするだけです。

よくわかりませんが、コンパイラの設定を引数のようにこのスクリプトに渡すことができる可能性が最も高いでしょう。私は今それを解決しようとしています。

于 2019-12-25T11:33:00.883 に答える