コマンドライン(pwsh.exe)からQtのソースコードをビルドしてみた。

C++ コンピュータ
C++

ライブラリを参照するコンパイルの方法を確認するため、Qtツールキットを使いウィンドウを開くソースコードをコンパイルしてみたいと思います。

コンパイルするソースコード
ファイル名:main.cpp

#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("Hello Qt!");
    window.resize(400, 300);
    window.show();

    return app.exec();
}

コンパイルコマンド

g++ main.cpp  `
 -IC:\Users\karet\scoop\apps\msys2\current\mingw64\include\qt6  `
 -LC:\Users\karet\scoop\apps\msys2\current\mingw64\lib  `
 -lQt6Gui -lQt6Core -lQt6Widgets  `
 -o app.exe

/I: … Includeのパス
/L: … Libraryのパス

結果


    Directory: J:\qtcpp\02_firstwin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2025/12/07     2:48         137634 app.exe
-a---          2025/12/07     2:46            282 main.cpp

“app.exe”が作成されているのでコンパイルが成功したようです。

Msys2(MinGW)でOpenCVを導入する

ライブラリを参照するコンパイル方法が確認出来ましたので、OpenCVを導入してみたいと思います。

・msys2を起動しpacmanでopencvをインストール

pacman -S mingw-w64-x86_64-opencv

・サンプルコード

ファイル名:main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    // 読み込み元ファイル
    std::string input = "input.jpg";

    // 画像読み込み
    cv::Mat img = cv::imread(input, cv::IMREAD_COLOR);

    // 読み込めなかった場合
    if (img.empty()) {
        std::cerr << "Failed to load image: " << input << std::endl;
        return -1;
    }

    // 出力ファイル名
    std::string output = "output.jpg";

    // 書き出し
    if (!cv::imwrite(output, img)) {
        std::cerr << "Failed to save image: " << output << std::endl;
        return -1;
    }

    return 0;
}

・コンパイルコマンド
PowerShellで以下のコマンドを実行

g++ main.cpp `
 -IC:\Users\karet\scoop\apps\msys2\current\mingw64\include\opencv4 `
 -LC:\Users\karet\scoop\apps\msys2\current\mingw64\lib `
 -lopencv_core -lopencv_imgcodecs -lopencv_highgui `
 -o opcv.exe

・実行
生成された”opcv.exe”を実行したところ、同じディレクトリに保存した”input.jpg”が”output.jpg”というファイル名でコピーされていました。

コメント