Clion、MSVC、QT6开发环境搭建

650 阅读2分钟

使用CLion+MSVC进行QT6 开发

1.安装vs2019编译环境和QT CMAKE环境

打开vs安装器,选择单个组件,勾选vs2019 C++生成工具和 Spectre缓解库

打开qt maintenance tool 安装MSVC2019并配置环境变量

2.在CLion中配置工具链

1、设置中打开toolchain,增加Visual Studio的环境,选择vs2022的安装目录

3.Cmake中选择刚才配置的工具链

Cmake中将默认的Deubug改为Release

4. 编写相应的CmakeLists.txt文件

cmake_minimum_required(VERSION 3.28)
project(demo3)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
​
set(CMAKE_PREFIX_PATH "E:/DEV/QT/6.7.2/msvc2019_64") #这里换成当前机器对应的QT MSVC环境所在目录
​
​
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt${QT_VERSION_MAJOR} ]] REQUIRED COMPONENTS Widgets LinguistTools)
​
​
aux_source_directory(. DIRS_SRCS)  #当前文件夹加入cmake
​
set(SOURCE_FILES
${DIRS_SRCS}
​
)
​
set(PROJECT_SOURCES
 ${SOURCE_FILES}
)
​
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(${PROJECT_NAME}
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
else()
if(ANDROID)
add_library(${PROJECT_NAME} SHARED
    ${PROJECT_SOURCES}
)
else()
add_executable(${PROJECT_NAME}
    ${PROJECT_SOURCES}
)
endif()
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR}  ${TS_FILES} )
endif()
​
# 链接库文件
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
)
​
set_target_properties( ${PROJECT_NAME} PROPERTIES
​
WIN32_EXECUTABLE ON  # 去掉注释则保留控制台, 可以看到输出
)
​
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(${PROJECT_NAME})
endif()
# 区别debug和release来决定是否去除命令行
if(${CMAKE_CXX_COMPILER} MATCHES ".*/(g\+\+)(\..*)")
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-mwindows")
elseif(${CMAKE_CXX_COMPILER} MATCHES ".*/(cl)(\..*)")
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
endif()

5、编辑模板文件

Clion打开设置 -> File and code templates,选择QT的CMakeLists.txt模板

cmake_minimum_required(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
project(${PROJECT_NAME})
set(CMAKE_CXX_STANDARD ${CMAKE_LANGUAGE_VERSION})
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
#if( ${CMAKE_MAJOR_VERSION} < 3 || ( ${CMAKE_MAJOR_VERSION} == 3 and ${CMAKE_MINOR_VERSION} < 7 ) )
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#end
​
#if( ${QT_PATH} != "" )
set(CMAKE_PREFIX_PATH "${QT_PATH}") #这里换成当前机器对应的QT MSVC环境所在目录
#end
​
​
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)
find_package(Qt#[[${QT_VERSION_MAJOR} ]]# REQUIRED COMPONENTS Widgets LinguistTools)
​
aux_source_directory(. DIRS_SRCS)  #当前文件夹加入cmake
​
set(SOURCE_FILES 
    #[[${DIRS_SRCS}]]#
       
)
​
set(PROJECT_SOURCES
     #[[${SOURCE_FILES}]]#
)
​
if(#[[${QT_VERSION_MAJOR}]]# GREATER_EQUAL 6)
    qt_add_executable(#[[${PROJECT_NAME}]]#
        MANUAL_FINALIZATION
        #[[${PROJECT_SOURCES}]]#
    )
else()
    if(ANDROID)
        add_library(#[[${PROJECT_NAME}]]# SHARED
            #[[${PROJECT_SOURCES}]]#
        )
    else()
        add_executable(#[[${PROJECT_NAME}]]#
            #[[${PROJECT_SOURCES}]]#
        )
    endif()
     qt5_create_translation(QM_FILES #[[${CMAKE_SOURCE_DIR}]]#  #[[${TS_FILES}]]# )
endif()
​
# 链接库文件
target_link_libraries(#[[${PROJECT_NAME}]]# PRIVATE 
Qt#[[${QT_VERSION_MAJOR}]]#::Widgets
Qt#[[${QT_VERSION_MAJOR}]]#::Core
Qt#[[${QT_VERSION_MAJOR}]]#::Gui
)
​
set_target_properties( #[[${PROJECT_NAME}]]# PROPERTIES
   
    WIN32_EXECUTABLE ON  # 去掉注释则保留控制台, 可以看到输出
)
​
if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(#[[${PROJECT_NAME}]]#)
endif()
# 区别debug和release来决定是否去除命令行
if(#[[${CMAKE_CXX_COMPILER}]]# MATCHES ".*/(g\+\+)(\..*)")
    set_target_properties(#[[${PROJECT_NAME}]]# PROPERTIES LINK_FLAGS_RELEASE "-mwindows")
elseif(#[[${CMAKE_CXX_COMPILER}]]# MATCHES ".*/(cl)(\..*)")
    set_target_properties(#[[${PROJECT_NAME}]]# PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
endif()

6、配置Profile或者配置windows系统环境变量

#如果不进行配置运行程序会报错找不到QT的dll文件
将 [你的QT安装目录]/msvc2019_64/bin 文件夹添加到Clion的profile或者windows环境变量中

使用FluentUI框架

1、下载UI源码

下载地址:github.com/Liniyous/El…

2、自己编译UI库

使用QT Creator进行编译,如果直接用Clion也可以,就是需要自己修改CMakelists文件

3、在新项目中导入库
  1. 复制include文件夹到新项目中
  2. 复制编译出来的lib和dll文件到新项目中
  3. 在新项目中加入这些文件的引用
4、复制dll文件到编译目录中
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD        # Adds a post-build event to 
        COMMAND ${CMAKE_COMMAND} -E copy_if_different  # which executes "cmake - E copy_if_different..."
        "${PROJECT_SOURCE_DIR}/libs/elawidgettools.dll"      # <--this is in-file
        "$<TARGET_FILE_DIR:${PROJECT_NAME}>")