当我运行make
来编译由cmake
生成的Makefile时,为了编译Qt5应用程序的hello world示例,编译失败并出现以下错误:
为什么编译失败?
(我正在努力遵循的具体细节)
我在Windows 10下,使用从Qt official website下载的Qt5.5二进制文件,mingw-w64 gcc
和g++
随WinBuilds一起发送,{{1从official website下载并随cmake
一起安装的v3.6。
我正在尝试编译Qt5's official wiki中提供的以下hello world测试文件:
Windows win64-x64 Installer
使用命令#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication app (argc, argv);
return app.exec();
}
从包含.cpp文件的目录中名为cmake -G "MinGW Makefiles" ..
的文件夹中成功构建Makefile。使用了以下CMakeLists.txt文件(取自Qt5's cmake wiki page,并添加了CMAKE_PREFIX_PATH变量的规范,这是SO post中讨论的所必需的):
build
(我没有使用Qt5附带的cmake,因为它不起作用)。
现在,当我在cmake生成的Makefile上运行cmake_minimum_required(VERSION 2.8.11)
SET(CMAKE_C_COMPILER C:/WinBuilds/bin/x86_64-w64-mingw32-gcc-4.8.3.exe)
SET(CMAKE_CXX_COMPILER C:/WinBuilds/bin/x86_64-w64-mingw32-g++-4.8.3.exe)
project(testproject)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
#set(CMAKE_PREFIX_PATH "C:/WinBuilds/lib64/cmake")
set(CMAKE_PREFIX_PATH "C:/Qt/5.5/mingw492_32/lib/cmake")
find_package(Qt5Widgets)
add_executable(testfile WIN32 test.cpp)
target_link_libraries(testfile Qt5::Widgets)
(或更确切地说,make
,再次附带WinBuilds)时,会出现问题。
当我这样做时,编译失败并出现以下错误(上面的屏幕截图中显示了相同的错误):
mingw32-make
为什么编译失败?
在另一个SO question中报告了类似的未定义引用错误,但原因似乎与当前案例不同。
答案 0 :(得分:2)
问题是当您尝试构建64位Qt应用程序时,您正在使用32位mingw编译的Qt二进制文件。您需要使用使用mingw编译的64位Qt二进制文件才能工作。