QtCreator+CMake编译器设置

一、背景

最近在接触使用Qt完成跨平台方案的验证工作,在使用Qt编译器是,发现可以使用CMake进行工程构建,可惜怎么都无法运行。最终经过摸索,终于找到了原因,整理成文章,希望对其他人有帮助。

二、错误类型

错误1

	CMake Error: Generator: execution of make failed. Make command was: jom /nologo cmTC_28787\fast 

错误2

CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM 

错误3

系统找不到指定的文件 (ansi编码)
   或者
绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢 (utf8编码)

三、问题解释

问题1 : cmake在执行make命令时失败;
问题2:cmake没有找到构建工具Ninja的执行目录,需要设置CMAKE_MAKE_PROGRAM
问题3:系统找不到指定文件有,有的编译器会输出utf8编码的乱码

四、QtCreator下使用CMake的具体配置

1 .创建QtWidget项目:
加粗样式
2. 选择构建系统为CMake
cmake

  1. 选择编译器类型为vs2015
    选择编译器

  2. 创建完成后,系统直接报错


Running C:\Program Files\CMake\bin\cmake.exe -S D:/dev/qt/project/CMakeTest -B C:/Users/Administrator/AppData/Local/Temp/QtCreator-OcBgPI/qtc-cmake-GWLriTJW in C:\Users\Administrator\AppData\Local\Temp\QtCreator-OcBgPI\qtc-cmake-GWLriTJW.
-- The CXX compiler identification is MSVC 19.0.24210.0
-- Detecting CXX compiler ABI info
CMake Error: Generator: execution of make failed. Make command was: jom -f Makefile /nologo cmTC_30d6b\fast && 
-- Detecting CXX compiler ABI info - failed
-- Check for working CXX compiler: D:/vs2015/VC/BIN/amd64/cl.exe
CMake Error: Generator: execution of make failed. Make command was: jom -f Makefile /nologo cmTC_634f6\fast && 
-- Check for working CXX compiler: D:/vs2015/VC/BIN/amd64/cl.exe - broken
CMake Error at C:/Program Files/CMake/share/cmake-3.21/Modules/CMakeTestCXXCompiler.cmake:59 (message):
  The C++ compiler
    "D:/vs2015/VC/BIN/amd64/cl.exe"
  is not able to compile a simple test program.
  It fails with the following output:
    Change Dir: C:/Users/Administrator/AppData/Local/Temp/QtCreator-OcBgPI/qtc-cmake-GWLriTJW/CMakeFiles/CMakeTmp
    
    Run Build Command(s):jom -f Makefile /nologo cmTC_634f6\fast && 绯荤粺鎵句笉鍒版寚瀹氱殑鏂囦欢銆
    Generator: execution of make failed. Make command was: jom -f Makefile /nologo cmTC_634f6\fast && 
    
  
  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:3 (project)
-- Configuring incomplete, errors occurred!
See also "C:/Users/Administrator/AppData/Local/Temp/QtCreator-OcBgPI/qtc-cmake-GWLriTJW/CMakeFiles/CMakeOutput.log".
See also "C:/Users/Administrator/AppData/Local/Temp/QtCreator-OcBgPI/qtc-cmake-GWLriTJW/CMakeFiles/CMakeError.log".
CMake process exited with exit code 1.
Elapsed time: 00:01.
  1. 问题分析
    QtCreator使用CMake进行构建,使用的默认编译器是mingw和nmake构建系统,具体使用可以参考其他人的blog.
    所以说msvc编译器,qtCeator的支持不够好,但也不是不能用,需要自己熟悉qtCreator,自己去修改命令
  2. 解决方法
    在qtCreator的 manag kits中点击按钮,在弹出对话框中选择vs2015_x64,修改CMake Generator 为visual studio 14 2015 x64
    在这里插入图片描述
    编译,仍然报错,需要继续修改。点击项目->构建设置面板,删除 配置项中的:
	-GNMake Makefiles JOM

在这里插入图片描述
将四个配置项中的设置全部删除,记得要全部清理,然后再次执行cmake构建,可以构建成功,但无法编译代码,生成可执行文件。
还需要继续改, 打开项目->buil&run ,找到配置:Build的步骤,将all选项去掉,勾选ALL_BUILD即可编译出可执行文件。
在这里插入图片描述

五、 后记

QtCreator 对msvc支持不够完备,坑很多,建议还是使用Mingw来创建cmake,不用设置,直接可以用。

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
通常情况下,qmake和CMake是两种不同的构建系统,它们使用不同的语法和文件格式。因此,直接使用qmake编译CMake项目可能会遇到一些问题。 但是,你可以使用外部构建的方法来在qmake中调用CMake项目。具体步骤如下: 1. 在CMake项目的根目录下创建一个名为`build`的目录,作为外部构建目录。 2. 进入`build`目录,运行以下命令: ``` cmake ../ ``` 这将生成Makefile文件和其他构建脚本。 3. 回到项目根目录,创建一个新的.pro文件,例如`CMakeProject.pro`,并添加以下内容: ``` TEMPLATE = app CONFIG += console CONFIG -= app_bundle SOURCES += main.cpp QMAKE_EXTRA_TARGETS += cmake cmake.commands = $(MAKE) -C $$PWD/build PRE_TARGETDEPS += $$PWD/build/Makefile ``` 这将创建一个简单的控制台应用程序,将`main.cpp`作为入口点,并添加一个名为`cmake`的额外目标,它将调用`make`命令来编译CMake项目。`PRE_TARGETDEPS`变量将确保在运行`make`命令之前先编译CMake项目。 4. 编辑`main.cpp`文件,添加一些代码来测试CMake项目是否正确编译: ``` #include <iostream> #include "mylibrary.h" int main() { std::cout << "Hello, world!" << std::endl; std::cout << "The answer is " << mylibrary::getAnswer() << std::endl; return 0; } ``` 在这个例子中,我们假设CMake项目中有一个名为`mylibrary`的库,并且它包含一个名为`getAnswer`的函数。 5. 使用qmake编译项目: ``` qmake CMakeProject.pro make ``` 这将使用qmake编译`CMakeProject.pro`文件,并调用CMake项目来编译`mylibrary`库。如果一切正常,应该会输出`Hello, world!`和`The answer is ...`。 需要注意的是,这种方法只是一种简单的解决方案,可能无法处理所有情况。如果你需要更复杂的构建系统,可以考虑使用其他工具,例如CMakeQt插件或QtCreator集成的CMake支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值