如何在 MSYS2 中通过 CMake 构建 c++ Qt5 应用程序



我有一个 c++ qt5 "hello world" cmake 项目;以下是我的主要.cpp和CMakeList.txt文件:

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QWidget widget;
    widget.resize(640, 480);
    widget.setWindowTitle("Hello, world!!!");
    QGridLayout *gridLayout = new QGridLayout(&widget);
    QLabel * label = new QLabel("Hello, world!!!");
    label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
    gridLayout->addWidget(label);
    widget.show();
    return app.exec();
}
cmake_minimum_required(VERSION 3.1.0)
project(helloworld)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
message("cmake source dir = ${CMAKE_SOURCE_DIR}")
set (Qt5_DIR "/mingw64/lib/cmake/Qt5")
find_package(Qt5 COMPONENTS Widgets REQUIRED)
add_executable(helloworld
    main.cpp
)
target_link_libraries(helloworld Qt5::Widgets)

我只是从官方页面复制CMakeList并写下一些非常基本的主.cpp。然后我在我的Linux(openSUSE 15.0(上构建了它,一切正常。现在我想在MSYS2上构建(以获得Windows版本(。首先,我无法构建cmake项目,因为找不到Qt5Config.cmake文件。我添加了

set (Qt5_DIR "/mingw64/lib/cmake/Qt5")

以"手动"查找Qt5Config.cmake文件。将其添加到我的 cmake 文件后,项目构建良好。但是当我运行make来编译程序时,我收到以下错误:

[ 25%] Automatic MOC and UIC for target helloworld
[ 25%] Built target helloworld_autogen
[ 50%] Linking CXX executable helloworld.exe
CMakeFiles/helloworld.dir/main.cpp.o:main.cpp:(.text$_ZN15QTypedArrayDataItE10deallocateEP10QArrayData[_ZN15QTypedArrayDataItE10deallocateEP10QArrayData]+0x1c): undefined reference to `QArrayData::deallocate(QArrayData*, unsigned long, unsigned long)'
CMakeFiles/helloworld.dir/main.cpp.o:main.cpp:(.text$_ZN15QTypedArrayDataItE10deallocateEP10QArrayData[_ZN15QTypedArrayDataItE10deallocateEP10QArrayData]+0x1c): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `QArrayData::deallocate(QArrayData*, unsigned long, unsigned long)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/helloworld.dir/build.make:102: helloworld.exe] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/helloworld.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

据我了解,有一些丢失的库找不到。但我不知道如何解决它。

你不需要 CMakeLists.tx您只需按构建按钮

相关内容

  • 没有找到相关文章

最新更新