Linux、macOSを試してみる。

[Qt] Zipファイルを扱う(Windows,VS2017)のときと同じようにQtからお手軽にZIPファイルを扱えるQuaZIPの紹介 - 理ろぐのページを参考に試してみた。

Linux

Linuxは、Ubuntu 18.04.2 LTSを使用した。

quazip-0.7.6フォルダがあるディレクトリで

mkdir build-quazip-linux-x64
cd build-quazip-linux-x64

を実行する。

そしてビルド&インストール。

qmake -r ../quazip-0.7.6/quazip/quazip.pro "PREFIX=../../quazip/linux-x64" LIBS+=-lz
make all
make install

macOS

ターミナルを起動して、Qtのqmakeのあるところにパス(うちは~/Qt/5.12.3/clang_64/bin)を通す。
quazip-0.7.6フォルダがあるディレクトリで

mkdir build-quazip-macos-x64
cd build-quazip-macos-x64

を実行する。

そしてビルド&インストール。

qmake -r ../quazip-0.7.6/quazip/quazip.pro "PREFIX=../../quazip/macos-x64" LIBS+=-lz
make all
make install

quazipフォルダができ、そこにシェアドライブラリやヘッダなんかがインストールされる。

次に参考にしたページにあった"quazip.pri"を見よう見まねでこんな感じにした。

# for quazip
QUAZIP_DIR = $${PWD}/../quazip
mingw:{
    equals(QT_ARCH, "x86_64"):{
        # 64bit
        QUAZIP_DIR = $$QUAZIP_DIR/mingw-x64
    }else{
        # 32bit
        QUAZIP_DIR = $$QUAZIP_DIR/mingw-x86
    }
} else: win32:{
    equals(QT_ARCH, "x86_64"):{
        # 64bit
        QUAZIP_DIR = $$QUAZIP_DIR/x64
    }else{
        # 32bit
        QUAZIP_DIR = $$QUAZIP_DIR/x86
    }
} else: macos: {
    QUAZIP_DIR = $$QUAZIP_DIR/macos-x64
} else: unix: {
    equals(QT_ARCH, "x86_64"):{
        # 64bit
        QUAZIP_DIR = $$QUAZIP_DIR/linux-x64
    }else{
        # 32bit
        QUAZIP_DIR = $$QUAZIP_DIR/linux-x86
    }
}

INCLUDEPATH += $$QUAZIP_DIR/include/quazip
CONFIG(debug,debug|release){
    mingw: {
        LIBS += -L$$QUAZIP_DIR/bin/ -lquazipd
    } else:win32:{
        LIBS += $$QUAZIP_DIR/bin/quazipd.lib
    }
}else{
    mingw: {
        LIBS += -L$$QUAZIP_DIR/bin/ -lquazip
    } else:win32: {
        LIBS += $$QUAZIP_DIR/bin/quazip.lib
    }
}
unix: LIBS += -L$$QUAZIP_DIR/lib/ -lquazip

# for zlib
win32: INCLUDEPATH += $$[QT_INSTALL_PREFIX]/include/QtZlib

# copy library file
win32:{
    CONFIG(debug,debug|release){
        QUAZIP_LIB_PATH=$$QUAZIP_DIR/bin/quazipd.dll
        APP_BUILD_DIR=$$shadowed($${PWD})/debug
    }else{
        win32:QUAZIP_LIB_PATH=$$QUAZIP_DIR/bin/quazip.dll
        APP_BUILD_DIR=$$shadowed($${PWD})/release
    }
    QUAZIP_LIB_PATH ~= s|/|\|gi
    APP_BUILD_DIR ~= s|/|\|gi
}else:macos:{
    QUAZIP_LIB_PATH=$$QUAZIP_DIR/lib/libquazip.*
    APP_BUILD_DIR=$$shadowed($${PWD})
}else{
    QUAZIP_LIB_PATH=$$QUAZIP_DIR/lib/libquazip.so.*
    APP_BUILD_DIR=$$shadowed($${PWD})
}
copyquazip.commands = $(COPY_DIR) $$QUAZIP_LIB_PATH $$APP_BUILD_DIR
QMAKE_EXTRA_TARGETS += copyquazip