[software development] 求助:QT creator怎样编译多文件纯c代码?
Tofloor
poster avatar
嵩云闲人
deepin
2024-07-17 10:24
Author

用QT creator编写纯c代码,如果代码都在一个文件里,qmake命令生成的Makefile,可以正确生成可直接运行程序。在项目里面再添加一个纯c代码文件后,QT creator可以运行并得到正确结果,但是qmake生成的Makefile,运行后全部是“没有找到命令.....”等错误提示,不能生成可直接运行程序。请熟悉QT的老师赐教如何解决这个问题。

Reply Favorite View the author
All Replies
乾豫恒益
deepin
2024-07-17 10:40
#1

我的方案:用QT编写,然后在终端里用gcc编译。。。

Reply View the author
嵩云闲人
deepin
2024-07-17 11:38
#2
乾豫恒益

我的方案:用QT编写,然后在终端里用gcc编译。。。

问题是:需要将纯c代码,加入到QT项目。需要QT实现界面。

Reply View the author
wlly-lzh
deepin
2024-07-17 12:12
#3

有没有可能是你的qmake文件(*.pro)没有把.c文件加到项目里面?

Reply View the author
嵩云闲人
deepin
2024-07-17 13:02
#4
wlly-lzh

有没有可能是你的qmake文件(*.pro)没有把.c文件加到项目里面?

加进去了。添加c代码文件时,QT creator自动加进去的。

Reply View the author
depend
deepin
2024-07-17 14:28
#5

用qtcerator能正常运行且编译调试的话,你说makefile有问题,可能是你用的qmake是qt4的?,但是creator里面默认是5?

Reply View the author
depend
deepin
2024-07-17 14:28
#6

用qmake的绝对路径试试

Reply View the author
乾豫恒益
deepin
2024-07-17 14:50
#7
嵩云闲人

问题是:需要将纯c代码,加入到QT项目。需要QT实现界面。

不需要,按C++的去写,没问题的。

Reply View the author
申伟
deepin
2024-07-17 16:19
#8

可以直接 c 代码的,你看一下 kit 有没有指定 c 的编译器,如 gcc

Reply View the author
嵩云闲人
deepin
2024-07-18 10:09
#9
申伟

可以直接 c 代码的,你看一下 kit 有没有指定 c 的编译器,如 gcc

有gcc的。单个纯c是qmake后可以Makefile的。

Reply View the author
嵩云闲人
deepin
2024-07-18 10:10
#10
乾豫恒益

不需要,按C++的去写,没问题的。

原来我也是这么想的,但是有版本冲突。c的函数在c++中不是每一个都可以用的。

Reply View the author
乾豫恒益
deepin
2024-07-18 10:18
#11
嵩云闲人

原来我也是这么想的,但是有版本冲突。c的函数在c++中不是每一个都可以用的。

函数问题,我的解决方法:按正常的去写,不要用QT去调试,不理会QT的错误提醒,以GCC的编译为准。

也就是说,只把QT当成一个文本编辑器,不是编译器。

Reply View the author
魔法师
deepin
2024-07-18 14:51
#12

RT:我将其分为两部分

  1. 纯 C 部分,所有源代码编译为库(.a)
  2. 纯 C++ 部分,所有源代码照常编译
  3. C++ 部分引用 C 函数,使用 extern "C" { 来包围 #include

因为不太会 qmake ,以下我使用 cmake 为例:

image.png

正常来说,一个基本的项目构建就是这样的。

并且我需要 cmake 生成一个 compile_commands.json 提供给我 clangd 语言服务器去分析整个项目的构建结构,并代为增强 vscode 编辑能力,我想 qtcreator 也会理解吧。

qmake 理论上是可以配置 c 的编译,但我不太清楚如何编写。

Reply View the author
嵩云闲人
deepin
2024-07-19 08:28
#13
魔法师

RT:我将其分为两部分

  1. 纯 C 部分,所有源代码编译为库(.a)
  2. 纯 C++ 部分,所有源代码照常编译
  3. C++ 部分引用 C 函数,使用 extern "C" { 来包围 #include

因为不太会 qmake ,以下我使用 cmake 为例:

image.png

正常来说,一个基本的项目构建就是这样的。

并且我需要 cmake 生成一个 compile_commands.json 提供给我 clangd 语言服务器去分析整个项目的构建结构,并代为增强 vscode 编辑能力,我想 qtcreator 也会理解吧。

qmake 理论上是可以配置 c 的编译,但我不太清楚如何编写。

谢谢!实在不行就这么干。

Reply View the author