我試圖在CLion C/C++ IDE中使用learn Qt5 with CMake,我對這些工具相對較新。所以,我有這個真正簡單代碼main.cpp
:在C++中使用CMake(mingw)在CLion中未定義的Qt5引用
#include <QDebug>
int main() {
qDebug("Hello World!");
return 0;
}
我已經按照文檔以及與此CMakeLists.txt
結束:
cmake_minimum_required(VERSION 2.8.11)
project(cl_hello_world2)
set(CMAKE_PREFIX_PATH D:/Qt/Qt5.4.0/5.4/msvc2012_opengl)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_VERBOSE_MAKEFILE ON)
find_package(Qt5Widgets)
set(SOURCE_FILES main.cpp)
add_executable(cl_hello_world2 WIN32 ${SOURCE_FILES})
target_link_libraries(cl_hello_world2 Qt5::Widgets)
的努力之後幾個小時,我一直有這些undefined reference
錯誤:
CMakeFiles\cl_hello_world2.dir/objects.a(main.cpp.obj): In function `main':
E:/Qt/test/cl-hello-world2/main.cpp:4: undefined reference to `_imp___ZNK14QMessageLogger5debugEPKcz'
這是CMake正在執行的編譯器命令:
D:\PROGRA~2\CODEBL~1\MinGW\bin\G__~1.EXE -std=c++11 -g -mwindows -Wl,--whole-archive CMakeFiles\cl_hello_world2.dir/objects.a -Wl,--no-whole-archive -o cl_hello_world2.exe -Wl,--out-implib,libcl_hello_world2.dll.a -Wl,--major-image-version,0,--minor-image-version,0 D:\Qt\Qt5.4.0\5.4\msvc2012_opengl\lib\Qt5Widgetsd.lib D:\Qt\Qt5.4.0\5.4\msvc2012_opengl\lib\Qt5Guid.lib D:\Qt\Qt5.4.0\5.4\msvc2012_opengl\lib\Qt5Cored.lib D:\Qt\Qt5.4.0\5.4\msvc2012_opengl\lib\qtmaind.lib -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
我不知道,如果這條線是語法正確,但庫D:\Qt\Qt5.4.0\5.4\msvc2012_opengl\lib\Qt5Widgetsd.lib
存在...
我嘗試用Qt5.3.2和Qt 5.4.0。也許你知道一些其他的方式來添加鏈接的庫或者我犯了一個錯誤...
謝謝。
你不能爲mingw使用visual studio二進制文件。使用Qt的mingw版本。 – drescherjm
哦,謝謝!我沒有注意到......我會尋找Qt – lmiguelmh
@drescherjm的mingw構建請添加您的評論作爲答案,我會接受它......也許我會添加一些編輯到您的答案澄清一些問題,我有。非常感謝。 – lmiguelmh