Qt

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

このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

MinGWを試してみる。
ただ、QuaZIP: QuaZIP - Qt/C++ wrapper for MinizipによるとMinGWはテストされていないようだけど。

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

スタートメニューから"Qt 5.12.3(MinGW 7.3.0 64-bit)"(コマンドプロンプト)を起動する。

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

mkdir build-quazip-MinGW-x64
cd build-quazip-MinGW-x64

を実行する。

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

qmake -r ..\quazip-0.7.6\quazip\quazip.pro "PREFIX=..\..\quazip\mingw-x64" LIBS+=-lz
mingw32-make all
mingw32-make release-install debug-install

quazipフォルダができ、そこにdllやヘッダなんかがインストールされる。

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

# for quazip
message($$QT_ARCH)
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
    }
}
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{
    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

このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

Qtからお手軽にZIPファイルを扱えるQuaZIPの紹介 - 理ろぐのページを参考に試してみた。

今回試した環境は、

  • Windows10 Pro(64ビット)
  • Qt 5.12.3
  • Visual Studio 2017
    だ。

quazipをビルドしてみる。

Releases · stachenov/quazip

こっから、バージョン0.7.6をダウンロードして展開する。quazip-0.7.6フォルダが出来る。

スタートメニューから"Qt 5.12.3(MSVC 2017 64-bit)"(コマンドプロンプト)を起動する。

起動したコマンドプロンプトでVS2017のコンパイラとか使えるように"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat"(VS2017をデフォルトでインストールした場合)を実行する。

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

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

を実行する。

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

qmake -r ..\quazip-0.7.6\quazip\quazip.pro "PREFIX=..\..\quazip\x64" "INCLUDEPATH+=$$[QT_INSTALL_PREFIX]/include/QtZlib"
nmake all
nmake release-install debug-install

quazipフォルダができ、そこにdllやヘッダなんかがインストールされる。

Qtからお手軽にZIPファイルを扱えるQuaZIPの紹介 - 理ろぐに書かれているのと違って、dllやlibは".\quazip\x64\lib"ではなくて".\quazip\x64\bin"にインストールさ れる。(バージョンが違うから?)
なので、"quazip.pri"に書かれているディレクトリを変更する必要がある。また、"X64"で比較して設定を変え ているんだけど、"X64"ではなくて"x64"が正解のようです。(これもバージョンが違うから?)
さらに"INCLUDEPATH += $$QUAZIP_DIR/include"は"INCLUDEPATH += $$QUAZIP_DIR/include/quazip"にしておい た方がいいかも。

さて、あとはmacOSやMinGWや他のプラットフォームでどーなるかを確認しないとな~。

あっ、よく見るとLinux、WindowsのMSVCしかサポートしてないのか・・・
Qtのバージョンも低いな~

(追記)
32bit版も作ってみた。基本的に64ビット版を選んでるところやx64を32ビットやx86に変えればOK.


このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

まず、単純にオブジェクトを作ってみる。

    QJsonObject jsonObj;
    jsonObj["hoge"] = "hoge";
    jsonObj["hoge2"] = "hoge2";

    QJsonDocument jsonDoc(jsonObj);

    printf("%s\n", qPrintable(QString::fromUtf8(jsonDoc.toJson())));

これを実行すると

{
    "hoge": "hoge",
    "hoge2": "hoge2"
}
続きを読む
このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

Qtで設定ファイルの読み書きを行う。QSettingsクラスを使って行うことができる。

まず、起動したところで組織名やアプリ名を設定する。設定ファイルの保存先や設定ファイル名がこれできまる。ちなみにWidgetクラスのコンストラクタで設定した。

続きを読む
このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

↑このページのトップヘ