2017-10-05 198 views
0

說實話,我不是Qt Creator的粉絲。所以我決定使用另一個像CLion的IDE。我研究並發現Clion不支持qmake,但可以通過cmake運行Qt-Project。我的CMakeList。當我保存這個make-file時,CLion不會給我任何錯誤。在CLion C++中使用cmake的Qt項目

cmake_minimum_required(VERSION 3.8) 
project(Qt_CmakeTest) 

set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
set(SOURCE_FILES main.cpp) 
find_package(Qt5Core REQUIRED) 
find_package(Qt5Widgets REQUIRED) 
add_executable(Qt_CmakeTest ${SOURCE_FILES}) 
target_link_libraries(Qt_CmakeTest Qt5::Core Qt5::Widgets) 

來測試它是否工作我創建了一個簡單的cpp。

#include <iostream> 
#include <QApplication> 

using namespace std; 
int main(int argc, char **argv) 
{ 
    QApplication app(argc,argv); 
    return app.exec(); 
} 

我試圖實現它以下說明 How to configure CLion IDE for Qt Framework?

我必須使用CMake的二進制文件Qt提供。所以我設置CMake的期權:

-DCMAKE_PREFIX_PATH=C:\Qt\Qt5.9.1\5.9.1\mingw53_32\lib\cmake 

但是,如果我嘗試編譯它,它給了我這個錯誤:

"C:\Program Files\JetBrains\CLion 2017.2.2\bin\cmake\bin\cmake.exe" --build 
C:\Users\Marcel\Desktop\Projekte\Qt\Qt-CmakeTest\cmake-build-debug --target Qt_CmakeTest -- -j 2 
[ 50%] Linking CXX executable Qt_CmakeTest.exe 
CMakeFiles\Qt_CmakeTest.dir/objects.a(main.cpp.obj): In function `main': 
C:/Users/Marcel/Desktop/Projekte/Qt/Qt-CmakeTest/main.cpp:7: undefined reference to `_imp___ZN12QApplicationC1ERiPPci' 
C:/Users/Marcel/Desktop/Projekte/Qt/Qt-CmakeTest/main.cpp:8: undefined reference to `_imp___ZN12QApplication4execEv' 
C:/Users/Marcel/Desktop/Projekte/Qt/Qt-CmakeTest/main.cpp:7: undefined reference to `_imp___ZN12QApplicationD1Ev' 
C:/Users/Marcel/Desktop/Projekte/Qt/Qt-CmakeTest/main.cpp:7: undefined reference to `_imp___ZN12QApplicationD1Ev' 
collect2.exe: error: ld returned 1 exit status 
mingw32-make.exe[3]: *** [Qt_CmakeTest.exe] Error 1 
CMakeFiles\Qt_CmakeTest.dir\build.make:99: recipe for target 'Qt_CmakeTest.exe' failed 
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/Qt_CmakeTest.dir/all' failed 
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/Qt_CmakeTest.dir/rule' failed 
Makefile:117: recipe for target 'Qt_CmakeTest' failed 
mingw32-make.exe[2]: *** [CMakeFiles/Qt_CmakeTest.dir/all] Error 2 
mingw32-make.exe[1]: *** [CMakeFiles/Qt_CmakeTest.dir/rule] Error 2 
mingw32-make.exe: *** [Qt_CmakeTest] Error 2 

我下載不同版本的Qt的,因爲Qt的5.9使用MinGW的5.3和CLion說我使用的是Mingw 5.0,一開始我使用的是Qt 5.6,它使用了Mingw 4.9。我無法弄清楚爲什麼它不起作用。

乾淨CMake的構建是這樣的

"C:\Program Files\JetBrains\CLion 2017.2.2\bin\cmake\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" C:\Users\Marcel\Desktop\Projekte\Qt\Qt-CmakeTest 
-- The C compiler identification is GNU 6.3.0 
-- The CXX compiler identification is GNU 6.3.0 
-- Check for working C compiler: C:/MinGW/bin/gcc.exe 
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Detecting C compile features 
-- Detecting C compile features - done 
-- Check for working CXX compiler: C:/MinGW/bin/g++.exe 
-- Check for working CXX compiler: C:/MinGW/bin/g++.exe -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
-- Configuring done 
-- Generating done 
-- Build files have been written to: C:/Users/Marcel/Desktop/Projekte/Qt/Qt-CmakeTest/cmake-build-debug 

[Finished] 
+0

你鏈接到'Qt5 :: Widgets',但你似乎也需要鏈接到'Qt5 :: Core'。 – nwp

+0

更新了CMakeList。還是行不通。還嘗試設置路徑(CMAKE_PREFIX_PATH「C:/Qt/Qt5.9.1/5.9.1/msvc2017_64」)並嘗試了不同的版本(VS,mingw) – MNCODE

+0

錯誤消息是否完全改變?你有沒有試圖找出Qt可能需要的其他庫? – nwp

回答

0

不知怎的,沒有路徑Qt的二進制文件。我已經添加了PATH並重建cmake項目,它工作。所以這只是路徑和版本的問題。