- A+
方法
1、使用QtCreator建立一个简单的qt程序
2、在工程根目录下新建CMakeLists.txt文件,内容如下,标红内容需要视工程情况修改
- #设置cmake版本号
- cmake_minimum_required(VERSION 3.10.0)
- #设置工程名称
- project(QTCmakeDemo)
- #设置工程包含当前目录,非必须
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
- #设置自动生成moc文件,一定要设置
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTORCC ON)
- #查找需要的Qt库文件,最好每一个库都要写,Qt也会根据依赖关系自动添加
- find_package(Qt5Widgets)
- find_package(Qt5Core)
- find_package(Qt5Gui)
- #查找当前文件夹中的所有源代码文件,也可以通过Set命令将所有文件设置为一个变量
- FILE(GLOB SRC_FILES "./*.cpp")
- #同理,查找当前文件夹中所有的头文件
- FILE(GLOB HEAD_FILES "./*.h")
- #同理,查找当前文件夹中所有的ui文件
- FILE(GLOB UI_FILES "./*.ui")
- #通过Ui文件生成对应的头文件,一定要添加
- qt5_wrap_ui(WRAP_FILES ${UI_FILES})
- #添加资源文件
- set(RCC_FILES rs.qrc)
- #将ui文件和生成文件整理在一个文件夹中,非必须
- source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} )
- #创建工程文件
- add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES} ${RCC_FILES} ${WRAP_FILES})
- #添加Qt5依赖项
- target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)
3、QtCreator中关闭工程,并且用CMakeLists.txt重新打开工程
4、cmake该工程,参考https://www.cnblogs.com/ode/archive/2012/09/16/3551346.html
5、cmd命令行进入cmake生成路径下,如果cmake过程使用msvc,使用nmake命令编译makefile文件;否则使用make命令编译makefile文件
6、库或者运行程序便生成出来了。
问题
1、找不到nmake?
需要将nmake路径配置到环境变量中,如D:\Microsoft Visual Studio 12.0\VC\bin
2、报错*** missing separator (did you mean TAB instead of 8 spaces?). Stop.
使用nmake编译,不要使用make
3、error: C1083: 无法打开包括文件: “cstddef”: No such file or directory 或者找不到vs的其他头文件
cmd下进入到vs安装路径\VC\Bin下,如D:\Microsoft Visual Studio 12.0\VC\bin,执行vcvars32.bat,此时会自动为vs设置环境变量,这个环境变量只在当前命令提示符中生效,不要关闭命令提示符,cd到cmake生成路径下,运行nmake
4、Policy CMP0071 is not set: Let AUTOMOC and AUTOUIC process GENERATED files.
cmake>3.10版本即可,安装的cmake程序要大于3.10,同时cmakelist中设置的版本也要大于3.10,如cmake_minimum_required(VERSION 3.10.0)
5、如何编译成release版本
cmake时加上参数 -DCMAKE_BUILD_TYPE=Release