0
点赞
收藏
分享

微信扫一扫

揭秘ArrayList:深入探索Java的动态数组艺术

芝婵 2024-05-25 阅读 30

使用Visual Studio进行Qt开发的时候,我们可以借用Cmake的moc功能和相应对Qt的支持生成VS工程。

文件组织

Root
│  cmake.sh              // cmake执行脚本
│  CMakeLists.txt        // 根目录cmake文件
│  README.md 
│  text.txt
├─bin                    // 生成物存放目录
├─form
│      mainwindow.ui      // ui文件目录
├─include                // 头文件目录
│      mainwindow.h    
├─resource               // 资源文件目录
│      resource.qrc
└─source                 // CPP等源文件目录
        main.cpp          
        mainwindow.cpp

Cmake模版 

Cmake模版如下,执行cmake命令即可生成visual studio工程

#指定cmake的最小版本号
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)

#指定项目名称
PROJECT(Test LANGUAGES CXX)

# SET(QT5_DIR "D:\\Qt\\5.15.2\\msvc2019\\lib\\cmake\\Qt5")

#指定Qt路径和启用当前目录(按需设置)
# SET(CMAKE_PREFIX_PATH ${QT_PATH}/lib/cmake)
SET(CMAKE_PREFIX_PATH D:/Qt/5.15.2/msvc2019/lib/cmake)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

SET(PROJECT_DIR "./")

SET(CMAKE_AUTOMOC 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 "include/*.h")
FILE(GLOB_RECURSE SRC_FILES "source/*.cpp")
FILE(GLOB_RECURSE FORMS "*form/*.ui")
FILE(GLOB_RECURSE RESOURCE_FILES "resource/*.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 resource/resource.qrc)

#启用当前头文件目录
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

#将ui文件和生成文件整理在一个文件夹中
SOURCE_GROUP("Form Files" FILES ${FORMS})
#将qrc资源文件整理在一个文件夹中
SOURCE_GROUP("resource" FILES ${RESOURCE_FILES})
#查找当前目录下所有的.h和.cpp文件
SOURCE_GROUP("include" FILES ${HEADER_FILES})
SOURCE_GROUP("source" FILES ${SRC_FILES})
#翻译文件
#SOURCE_GROUP("Translation" FILES ${TS_FILES})

#将MOC,UI,QRC的中间生成文件编译进EXE中
SOURCE_GROUP("Generated" FILES ${MOC_FILES} ${FORMS_UIC} ${RES_FILES} ${TS_FILES})

#引入库目录路径
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/bin)

#将所有文件编译成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}/../bin)

#引入库目录头文件
INCLUDE_DIRECTORIES(${AUTOGEN_BUILD_DIR})
INCLUDE_DIRECTORIES(${PROJECT_DIR}/include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
#INCLUDE_DIRECTORIES(../Define ../Algorithm)

#链接以上lib库
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBRARIES})

#加载静态LIB
#TARGET_LINK_LIBRARIES(${PROJECT_NAME}
#	Algorithm.lib
#)

#启用Qt的库模块
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)
QT5_USE_MODULES(${PROJECT_NAME} Widgets Core Gui)
举报

相关推荐

0 条评论