使用CMake构建Qt5工程

如何使用CMake构建Qt工程,CMake和Qt各自的帮助文档上均提供了一些方法,下面对这些方法进行简单描述:

文件目录如下:(是不是很熟悉,用QT Creator新建一个 Qt Widgets Application,然后一路Next到头。)
|   CMakeLists.txt
|   main.cpp
|   mainwindow.cpp
|   mainwindow.h
|   mainwindow.ui

QT使用一系列绑定工具辅助生成代码。如:moc(Meta-Object Compiler)用于元对象代码生成,适用于*.h,*.cpp文件,uic(User Interface Compiler)用于Widget布局生成,适用于*.ui文件,rcc(Resource Compiler)用于虚拟文件系统内容生成, 适用于*.qrc文件。当使用QT官方IDE(QT Creator)构建项目时,IDE会自动调用这些工具。
当使用CMake生成QT工程时,所需做的事情就是告诉CMake哪些文件需要用使用Qt 辅助工具进行生成。

注意:以下 使用 CMake 3.11, Qt 5.9测试。更低版本没有测试过,可能存在问题!!!

方法一、全局控制



cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)

set(project_name TestWindow)

project(${project_name})

#打开全局moc
set(CMAKE_AUTOMOC ON)
#打开全局uic
set(CMAKE_AUTOUIC ON)
#打开全局rcc,本示例中没有使用qrc,此句可以去掉
set(CMAKE_AUTORCC ON)

find_package(Qt5 REQUIRED Widgets)

set(target_name mainwindow)
add_executable(${target_name} main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
target_link_libraries(${target_name} Qt5::Widgets)



该方法 从CMake全局入手控制文件生成,最多只需三句话。非常简便!


方法二、目标控制


cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)

set(project_name TestWindow)

project(${project_name})

find_package(Qt5 REQUIRED Widgets)

set(target_name mainwindow)
add_executable(${target_name} main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
target_link_libraries(${target_name} Qt5::Widgets)

#设置目标关联的*.h, *.cpp 使用 Qt moc进行编译 
set_target_properties(${target_name} PROPERTIES AUTOMOC ON)
#设置目标关联的*.ui 使用 Qt uic进行编译
set_target_properties(${target_name} PROPERTIES AUTOUIC ON)

#跳过不需要使用moc编译的文件。如果觉得麻烦此句可以不写,automoc能根据*.h,*.cpp代码里面的宏(Q_OBJECT;Q_GADGET;Q_NAMESPACE)自动判断是否需要使用moc
set_source_files_properties(main.cpp PROPERTIES SKIP_AUTOMOC ON)



使用该方法,从目标(可执行或者库)入手控制文件生成,可控力度更细一些。


上述两种方法:

使用CMake官方Auto方法生成的VS工程,主要会修改三个地方:
  1)会将一个mocs_compilation.cpp添加到工程里面
  2)【附件包含路径】中会添加一句TestWindow_autogen\include_xxx
  3)【预先生成事件】中会添加预处理命令,源文件修改后会自动重新生成moc_xxx.cpp文件


方法三、单个文件控制

cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)

set(project_name TestWindow)

project(${project_name})

set(target_name mainWindow)

find_package(Qt5 REQUIRED Widgets)

#包含当前路径,使用*.ui文件时,需要加上这句,否则找不到头文件
set(CMAKE_INCLUDE_CURRENT_DIR ON)

#需要生成的moc文件,输出文件名称放在变量 mocfiles中,必须在find QT5 package才能调用
qt5_wrap_cpp(mocfiles mainwindow.h)
source_group("moc" FILES ${mocfiles})

#需要生成的ui文件,必须在find QT5 package才能调用
qt5_wrap_ui(uifiles mainwindow.ui)

#添加生成的moc文件到目标中
add_executable(${target_name} main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ${mocfiles})
target_link_libraries(${target_name} Qt5::Widgets)


该方法从 源文件 入手控制文件生成,要稍微麻烦一些。

   CMake生成VS工程后,将mainwindow.ui的预处理命令放在mainwindow.ui属性配置中,而mainwindow.h的预处理命令放在CMake Rules/moc_mainwindow.cpp.rule的属性配置中。源文件修改后,目标文件会自动生成。

### 回答1: 在 Windows 下使用 CMake 编译 Qt 可以分为以下几个步骤: 1. 安装 Qt 首先需要安装 Qt,可以从官网下载安装程序进行安装。安装完成后,需要设置环境变量 QTDIR,指向 Qt 的安装目录。 2. 安装 CMake CMake 是一个跨平台的开源构建工具,可以从官网下载安装程序进行安装。 3. 配置 CMake 在配置 CMake 之前,需要先创建一个 CMakeLists.txt 文件,该文件描述了项目的构建过程。下面是一个简单的 CMakeLists.txt 文件示例: ``` cmake_minimum_required(VERSION 3.5) project(MyProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt5 COMPONENTS Widgets REQUIRED) add_executable(MyApp main.cpp) target_link_libraries(MyApp Qt5::Widgets) ``` 上面的示例文件中,指定了项目的名称和编程语言为 C++,并且使用了 Qt 的 Widgets 模块。最后创建了一个可执行文件 MyApp,并链接了 Qt5::Widgets 库。 接下来,在命令行中进入项目目录,执行以下命令进行配置: ``` mkdir build cd build cmake .. ``` 上述命令中,首先创建一个 build 目录,然后进入该目录,最后执行 cmake 命令进行配置。配置完成后,会在 build 目录中生成 Makefile 文件。 4. 编译项目 在命令行中执行以下命令进行编译: ``` make ``` 编译完成后,会在 build 目录中生成可执行文件 MyApp。 以上就是在 Windows 下使用 CMake 编译 Qt 的基本步骤。注意,上述命令中涉及到的路径需要根据实际情况进行修改。 ### 回答2: 在Windows下使用CMake编译Qt可以采取以下步骤: 1. 安装Qt:首先,需要在计算机上安装Qt开发框架。可以从Qt官方网站下载适用于Windows的Qt安装程序,并按照提示完成安装。 2. 安装CMake:接下来,需要在计算机上安装CMake工具。可以从CMake官方网站下载适用于Windows的CMake安装程序,并按照提示完成安装。 3. 创建CMakeLists.txt文件:在项目的根目录下创建一个CMakeLists.txt文件。该文件包含描述如何构建项目的指令。 4. 配置CMake使用命令行或图形界面工具打开CMake,并指定项目的源代码和构建目录。将源代码目录指向包含CMakeLists.txt文件的根目录,并选择构建目录,用于生成构建文件。 5. 生成构建文件:点击"Configure"按钮,CMake将解析CMakeLists.txt文件,并根据指令生成构建文件。可以选择生成Makefile、Visual Studio工程文件或其他支持的构建系统文件。 6. 编译项目:点击"Generate"按钮,CMake将生成所选构建系统所需的文件,可以在构建目录中找到。 7. 构建项目:使用所选的构建系统工具(例如,在Visual Studio中打开工程文件,或在命令行中使用make命令),进行实际的编译和构建过程。 8. 运行项目:完成编译后,可以在生成的可执行文件或库文件中找到生成的Qt应用程序,并运行它。 注意:在CMakeLists.txt文件中,应该指定项目需要的Qt模块和库,并确保CMake能够找到所需的Qt安装路径。可以使用find_package(Qt5 COMPONENTS ...)指令来查找并链接所需的Qt库。同时还可以设置其他构建选项,如编译器标志、链接选项等。 总之,使用CMake编译Qt项目可以提供更灵活和可移植的构建过程,可以轻松管理和跨平台编译Qt应用程序。 ### 回答3: 在Windows操作系统下使用CMake来编译Qt有以下几步: 1. 首先确保已经安装了CMake和Qt。可以从官方网站上下载并安装它们。 2. 创建一个新的CMakeLists.txt文件,该文件会告诉CMake如何构建和编译我们的Qt项目。 3. 在CMakeLists.txt文件中,添加以下内容: ``` cmake_minimum_required(VERSION 3.5) project(MyQtProject) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) if(WIN32) set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.15.2/5.15.2/msvc2019_64") #设置Qt安装路径 endif() find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) file(GLOB_RECURSE SOURCES src/*.cpp) file(GLOB_RECURSE HEADERS include/*.h) add_executable(MyQtProject ${SOURCES} ${HEADERS}) target_link_libraries(MyQtProject PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets) ``` 其中的"project(MyQtProject)"可以根据实际项目名称进行修改。"set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.15.2/5.15.2/msvc2019_64")"是设置Qt的安装路径,需要根据自己的实际安装路径进行修改。 4. 在项目根目录下创建一个build文件夹,用于存放生成的构建文件。 5. 打开命令提示符或者使用CMake GUI,并进入build文件夹的路径。 6. 在命令提示符或CMake GUI中执行以下命令来生成构建文件: ``` cmake .. ``` 7. 构建生成的构建文件,执行以下命令(如果使用CMake GUI,则可以直接点击“Generate”按钮): ``` cmake --build . ``` 8. 构建完成后,我们就可以在build文件夹中找到编译生成的可执行文件。 这样,我们就成功使用CMake来编译Qt项目了。记得根据自己的实际情况修改相应的路径和文件名。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值