0

Пытаюсь скомпилировать самый простой пример Qt + cmake в c++, но он выдает ошибки. CMakeLists.txt:

cmake_minimum_required(VERSION 3.16)
project(HelloWorld)

set(CMAKE_CXX_STANDARD 17)

set(CMAKE_PREFIX_PATH "G:\qt\5.15.2\mingw81_64\lib\cmake")

включаем поиск библиотек с использованием find_package()

через REQUIRED указываем, что библиотеки обязательны

find_package(Qt5Core REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Widgets REQUIRED)

set(SOURCE_FILES main.cpp) add_executable(HelloWorld ${SOURCE_FILES})

указываем, какие библиотеки необходимо подключить

target_link_libraries(${PROJECT_NAME} Qt5::Core) target_link_libraries(${PROJECT_NAME} Qt5::Gui) target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

main.cpp:

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

using namespace std;

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

QApplication app(argc, argv);

QWidget widget;
widget.resize(640, 480);
widget.setWindowTitle(&quot;Hello, world!!!&quot;);

QGridLayout *gridLayout = new QGridLayout(&amp;widget);

QLabel * label = new QLabel(&quot;Hello, world!!!&quot;);
label-&gt;setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
gridLayout-&gt;addWidget(label);

widget.show();

return app.exec();

}

Компиляция:

cmake --build . --config Release
CMake is re-running because E:/g++/тесты/test/build/CMakeFiles/generate.stamp is out-of-date.
  the file 'E:/g++/тесты/test/CMakeLists.txt'
  is newer than 'E:/g++/тесты/test/build/CMakeFiles/generate.stamp.depend'
  result='-1'
-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.22631.
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: E:/g++/тесты/test/build
MSBuild version 17.5.1+f6fdcf537 for .NET Framework

main.cpp main.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __cdecl QString::~QStri ng(void)" (__imp_??1QString@@QEAA@XZ) в функции main. [E:\g++\тесты\test\build\HelloWorld.vcxproj] main.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) private: static struct QTypedAr rayData<unsigned short> * __cdecl QString::fromAscii_helper(char const ,int)" (__imp_?fromAscii_helper@QString@@CAPEAU ?$QTypedArrayData@G@@PEBDH@Z) в функции main. [E:\g++\тесты\test\build\HelloWorld.vcxproj] main.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __cdecl QApplication::Q Application(int &,char *,int)" (__imp_??0QApplication@@QEAA@AEAHPEAPEADH@Z) в функции main. [E:\g++\тесты\test\build
HelloWorld.vcxproj] main.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: virtual __cdecl QApplic ation::~QApplication(void)" (__imp_??1QApplication@@UEAA@XZ) в функции main. [E:\g++\тесты\test\build\HelloWorld.vcxpro j] . . .

Vubni
  • 41
  • Если я правильно помню, два последние сегмента в пути в переменной CMAKE_PREFIX_PATH лишние. Ну и хардкодить это в проекте - плохая идея, лучше передавать снаружи – Bearded Beaver Mar 25 '24 at 14:17

0 Answers0