我正在查找如何在cmake中使用clion IDE編譯QT動態鏈接的項目。我遇到了以下項目設置的問題。我已經按照this教程,編譯並與mingw32的位和與連接套件跑了Qt的使用MinGW-W64(其QMAKE文件中C被發現:/ msys64/mingw64/bin)中編譯cmake find_packages(QT5)不使用正確版本的QT二進制文件,儘管設置了前綴路徑
我的項目設置是這樣的:
CMakeLists.txt
main.cpp
notepad.cpp
notepad.h
notepad.ui
在克利翁,我使用的cmake follwing文件,以建立該項目。
cmake_minimum_required(VERSION 3.7)
set(CMAKE_PREFIX_PATH C:/msys64/mingw64/bin)
project(qttest)
set(QT_ROOT_DIR "C:/msys64/mingw64/bin")
set(QT_QMAKE_EXECUTABLE ${QT_ROOT_DIR}/qmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui)
add_library(notepad notepad.cpp)
target_link_libraries (notepad Qt5::Core Qt5::Widgets Qt5::Gui)
set(SOURCE_FILES main.cpp)
add_executable(qttest ${SOURCE_FILES})
target_link_libraries(qttest notepad)
混得構建以下錯誤後:
{projectdir}/qttest/main.cpp:6: undefined reference to `__imp__ZN12QApplicationC1ERiPPci'
... (1000 of these types of errors) ...
CMakeFiles\qttest.dir\build.make:127: recipe for target 'qttest.exe' failed
CMakeFiles\Makefile2:104: recipe for target 'CMakeFiles/qttest.dir/all' failed
mingw32-make.exe[3]: *** [qttest.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/qttest.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/qttest.dir/rule] Error 2
CMakeFiles\Makefile2:116: recipe for target 'CMakeFiles/qttest.dir/rule' failed
Makefile:130: recipe for target 'qttest' failed
mingw32-make.exe: *** [qttest] Error 2
我用Google搜索的解決方案,並且看起來它被鏈接到32位MinGW的安裝QT的。這是有意義的,因爲我用mingw-w64編譯,所以我尋找solution here(包括通過findpackages的qt)來解決這個問題。這不起作用,所以我去找另一個solution here,這也恰好不起作用(將環境變量設置爲qmake目錄)。 This one也無法做任何事情(專門追加路徑變量到C:/ msys64/mingw64/bin)。
不知道是什麼問題,但任何幫助,將不勝感激。
編輯:當前sitatuation,我覺得我已經嘗試了一切,但我foudn這樣做以下時:
get_target_property(QtCore_location Qt5::Core LOCATION)
message("qtcore location ${QtCore_location}")
CMake的輸出實際上是
qtcore location C:/ProgramData/Anaconda3/Library/bin/Qt5Core.dll
所以很明顯它的鏈接到我的anaconda安裝,但是爲什麼我要如何阻止它!它似乎並不想使用其他任何東西,Anaconda出現在路徑中,但我需要將它保留在那裏。
不能接受我自己的答案,直到明天所以... – snb