cmake qt 添加路径 项目_CMake配置Qt工程
生活随笔
收集整理的這篇文章主要介紹了
cmake qt 添加路径 项目_CMake配置Qt工程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網上看到過不少文章,但翻來翻去網上的文章講得都很淺顯,而且有的沒有到達自己想要的目的,所以自己動手寫了一個。實現的要求有:
配置一個EXE工程,其他若干DLL工程。
每個工程下自動加載該文件夾的所有.h,.cpp,.ui文件,而不是每次添加文件都需要在CMakelists.txt文件中進行修改。
我工程的目錄結構如下:
記得把Qt安裝目錄下的Qt所有dll目錄加到環境變量中。
然后我們直接上CMakelists.txt代碼。
首先是Arithmetic根目錄下的CMakeLists.txt,該文件比較簡單,只要是包含子目錄的工程:
MainUI目錄下的CMakeLists.txt,該目錄會生成exe項目:
#指定cmake的最小版本號 CMAKE_MINIMUM_REQUIRED(VERSION 3.16)#指定項目名稱 PROJECT(Arithmetic LANGUAGES CXX)#指定Qt路徑和啟用當前目錄(按需設置) SET(CMAKE_PREFIX_PATH ${QT_PATH}/lib/cmake) SET(CMAKE_INCLUDE_CURRENT_DIR ON)#引入Qt庫 FIND_PACKAGE(Qt5Widgets REQUIRED) FIND_PACKAGE(Qt5Gui REQUIRED) FIND_PACKAGE(Qt5Core REQUIRED) FIND_PACKAGE(Qt5Sql REQUIRED) FIND_PACKAGE(Qt5Network REQUIRED) FIND_PACKAGE(Qt5Concurrent REQUIRED)#添加預編譯宏 ADD_DEFINITIONS(-DTORRENT_LIBRARY) ADD_DEFINITIONS(-DNO_FREETYPE) ADD_DEFINITIONS(-DUNICODE -D_UNICODE) ADD_DEFINITIONS(-DHCPP_LEGACY_API)#將各種文件歸類到指定變量 FILE(GLOB_RECURSE HEADER_FILES "*.h") FILE(GLOB_RECURSE SRC_FILES "*.cpp") FILE(GLOB_RECURSE FORMS "*.ui") FILE(GLOB_RECURSE RESOURCE_FILES "*.qrc") FILE(GLOB TS_FILES "*.ts") FILE(GLOB MOC_FILES "moc_*.cpp")#將ui文件編譯成ui_*.h文件 IF(FORMS)QT5_WRAP_UI(FORMS_UIC ${FORMS}) ENDIF()#將包含Q_OBJECT的頭文件編譯成moc_*.cpp文件 QT5_WRAP_CPP(MOC_FILES ${HEADER_FILES})#啟用qrc資源文件 QT5_ADD_RESOURCES(RES_FILES resourse.qrc)#啟用當前頭文件目錄 SET(CMAKE_INCLUDE_CURRENT_DIR ON)#將ui文件和生成文件整理在一個文件夾中 SOURCE_GROUP("Form Files" FILES ${FORMS}) #將qrc資源文件整理在一個文件夾中 SOURCE_GROUP("Resource Files" FILES ${RESOURCE_FILES}) #查找當前目錄下所有的.h和.cpp文件 SOURCE_GROUP("Header Files" FILES ${HEADER_FILES}) SOURCE_GROUP("Source Files" FILES ${SRC_FILES}) #翻譯文件 SOURCE_GROUP("Translation Files" FILES ${TS_FILES})#將MOC,UI,QRC的中間生成文件編譯進EXE中 SOURCE_GROUP("Generated Files" FILES ${MOC_FILES} ${FORMS_UIC} ${RES_FILES} ${TS_FILES})#引入庫目錄路徑 SET(SDK_PATH "../SDK-PATH") LINK_DIRECTORIES(${SDK_PATH}/Lib ${SDK_PATH}/opencv3.4/lib ${SDK_PATH}/libpng/lib ${SDK_PATH}/log4cplus/lib ${SDK_PATH}/zlib/lib)#引入庫目錄路徑 LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/x64)#將所有文件編譯成EXE,并設置以WIN32的方式運行 ADD_EXECUTABLE(${PROJECT_NAME} WIN32 ${HEADER_FILES} ${SRC_FILES} ${MOC_FILES} ${FORMS_UIC} ${RESOURCE_FILES} ${RES_FILES})#設置EXE文件的輸出目錄 SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/x64)#引入庫目錄頭文件 INCLUDE_DIRECTORIES(${SDK_PATH}/libpng/include${SDK_PATH}/zlib/include${SDK_PATH}/log4cplus/include${SDK_PATH}/opencv3.4/include${SDK_PATH}/opencv3.4/include/opencv${SDK_PATH}/opencv3.4/include/opencv2) INCLUDE_DIRECTORIES(${AUTOGEN_BUILD_DIR}) INCLUDE_DIRECTORIES(../Define ../Algorithm)#鏈接以上lib庫 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBRARIES})#鏈接opencv開發庫 TARGET_LINK_LIBRARIES(${PROJECT_NAME}debug opencv_world343d.lib optimized opencv_world343.lib debug zlibstaticd.lib optimized zlibstatic.libdebug libpng16_staticd.lib optimized libpng16_static.libdebug log4cplusUD.lib optimized log4cplusU.lib )#加載靜態LIB #TARGET_LINK_LIBRARIES(${PROJECT_NAME} # Algorithm.lib #)#啟用Qt的庫模塊 TARGET_LINK_LIBRARIES( ${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Sql Qt5::Network Qt5::Concurrent) QT5_USE_MODULES(${PROJECT_NAME} Widgets Core Gui Sql Network Concurrent)然后我們運行CMake生成相應的工程:
點擊Open Project用VS打開我們生成的工程:
最后編譯一下我們的程序,運行得到結果:
總結
以上是生活随笔為你收集整理的cmake qt 添加路径 项目_CMake配置Qt工程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12v小型电机型号大全_伊藤8KW静音柴
- 下一篇: 三个变量互换值_Python3 教程 变