make

用qmake生成Makefile

好久不见. 提交于 2019-12-04 07:57:28
1.简介:   qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。是qt工具包的一部分.在Unix&linux上写程式的人大概都碰过Makefile。用 make来开发和编译程式的确很方便,可是要写出一个Makefile就不简单了,手写Makefile是比较困难并且容易出错的,这阻挡了很多一部分的linux爱好者加入linux程序开发的阵营。    虽然Open Source Software也有GNU Automake和GNU Autoconf两个软件可以生成makefile文件,但是对于一个简单的项目,使用Automake和Autoconf就有点杀鸡也用宰牛刀了。使用qmake完全可以符合你的要求.Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。       2.安装qmake   在linux平台上,安装完qt以及相关的qt工具包,qmake就已经被安装好了.你唯一要注意的就是QTDIR值的设定,这个必须设置到Qt被安装到的地方。如:/usr/lib/qt3/,以及qmake可执行文件的路径加到PATH路径中.       3. 一个简单的例子   用vi写个hello.c ,   #include   int main(int argc, char** argv)   {    printf(

Qt - Error 2 at compile time

匿名 (未验证) 提交于 2019-12-03 10:24:21
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I just downloaded Qt SDK 4.8.1 and, after installing it, I simply tried to compile a default C++ project, but I got this strange error. 16:50:24: Running build steps for project test... 16:50:24: Configuration unchanged, skipping qmake step. 16:50:24: Starting: "C:\QtSDK\QtCreator\bin\jom.exe" cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"...

gcc makefile error: “No rule to make target …”

匿名 (未验证) 提交于 2019-12-03 08:59:04
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I'm trying to use GCC (linux) with a makefile to compile my project. I get the following error which is can't seem to decipher in this context: "No rule to make target 'vertex.cpp', needed by 'vertex.o'. Stop." This is the makefile: a . out : vertex . o edge . o elist . o main . o vlist . o enode . o vnode . o g ++ vertex . o edge . o elist . o main . o vlist . o enode . o vnode . o main . o : main . cpp main . h g ++ - c main . cpp vertex . o : vertex . cpp vertex . h g ++ - c vertex . cpp edge . o : edge . cpp edge . h g ++ - c

[转]详细易懂的Linux makefile教程(6)

被刻印的时光 ゝ 提交于 2019-12-03 08:39:34
隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是 [.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。 “隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则。例如,把[.c]文件编译成[.o]文件这一规则,你根本就不用写出来,make会自动推导出这种规则,并生成我们需要的[.o]文件。 “隐含规则”会使用一些我们系统变量,我们可以改变这些系统变量的值来定制隐含规则的运行时的参数。如系统变量“CFLAGS”可以控制编译时的编译器参数。 我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。 我 们了解了“隐含规则”,可以让其为我们更好的服务,也会让我们知道一些“约定俗成”了的东西,而不至于使得我们在运行Makefile时出现一些我们觉得 莫名其妙的东西。当然,任何事物都是矛盾的,水能载舟,亦可覆舟,所以,有时候“隐含规则”也会给我们造成不小的麻烦。只有了解了它,我们才能更好地使用 它。 一

[转]详细易懂的Linux makefile教程(5)

冷暖自知 提交于 2019-12-03 08:38:49
八、shell函数 shell函数也不像其它的函数。顾名思义,它的参数应该就是操作系统Shell的命令。它和反引号“`”是相同的功能。这就是 说,shell函数把执行操作系统命令后的输出作为函数返回。于是,我们可以用操作系统命令以及字符串处理命令awk,sed等等命令来生成一个变量, 如: contents := $(shell cat foo) files := $(shell echo *.c) 注意,这个函数会新生成一个Shell程序来执行命令,所以你要注意其运行性能,如果你的Makefile中有一些比较复杂的规则,并大量使用了这 个函数,那么对于你的系统性能是有害的。特别是Makefile的隐晦的规则可能会让你的shell函数执行的次数比你想像的多得多。 九、控制make的函数 make提供了一些函数来控制make的运行。通常,你需要检测一些运行Makefile时的运行时信息,并且根据这些信息来决定,你是让make继续执行,还是停止。 $(error <text ...> ) 产生一个致命的错误,<text ...>是错误信息。注意,error函数不会在一被使用就会产生错误信息,所以如果你把其定义在某个变量中,并在后续的脚本中使用这个变量,那么也是可以的。例如: 示例一: ifdef ERROR_001 $(error error is $(ERROR_001))

[转]详细易懂的Linux makefile教程(1)

倖福魔咒の 提交于 2019-12-03 08:38:35
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个 好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了 解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备 完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义 了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个 Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的 make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

Makefile removes object files for no reason

匿名 (未验证) 提交于 2019-12-03 01:06:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: Here is the Makefile code: CC = gcc CXX = g ++ OBJS = OMXComponent . o Event . o hello_jpeg . o JPEG . o OMXCore . o Locker . o Logger . o BIN = hello_jpeg . bin # include ../Makefile.include CFLAGS +=- DSTANDALONE - D__STDC_CONSTANT_MACROS - D__STDC_LIMIT_MACROS - DTARGET_POSIX - D_LINUX - fPIC - DPIC - D_REENTRANT - D_LARGEFILE64_SOURCE - D_FILE_OFFSET_BITS = 64 - U_FORTIFY_SOURCE - Wall - g - DHAVE_LIBOPENMAX = 2 - DOMX - DOMX_SKIP64BIT - ftree - vectorize - pipe - DUSE_EXTERNAL_OMX - DHAVE_LIBBCM_HOST - DUSE_EXTERNAL_LIBBCM

MAKEFILE详解 规则 二

匿名 (未验证) 提交于 2019-12-03 00:30:01
阅读小结:target, prerequisites, command, make会比较targets文件和prerequisites文件的修改日期, 动作名字Label 转自 http://www.cppblog.com/ivenher/articles/22086.html MAKEFILE详解 规则 二 make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序 。 首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是: 1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。 2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。 3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。 只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。 一、Makefile的规则 在讲述这个Makefile之前

Could not start process “make” qmake_all

匿名 (未验证) 提交于 2019-12-02 23:26:52
Ubuntu 64λ Qt生成错误Could not start process “make” qmake_all Error while building/deploying project Calculator (kit: Desktop Qt 5.10.0 GCC 64bit) When executing step “qmake” 解决办法: In terminal: sudo apt-get install build-essential If you get Cannot find -lGL error, try this: sudo apt-get install libgl1-mesa-dev 参考: https://stackoverflow.com/questions/47810466/could-not-start-process-make-qmake-all 文章来源: https://blog.csdn.net/xjcwzp/article/details/88861813

linux学习记录.6.vscode调试c makefile

匿名 (未验证) 提交于 2019-12-02 21:59:42
参考 https://www.cnblogs.com/lidabo/p/5888997.html 多文件 终端 touch main.c hw.c hw.h vscode hw.c Vscode 打开文件夹 1 /* hw.c */ 2 #include " hw.h " 3 4 void print() 5 { 6 printf( " Hello World!\n " ); 7 } 1 /* hw.h */ 2 #include <stdio.h> 3 4 void print(); 1 /* main.c */ 2 #include " hw.h " 3 4 int main() 5 { 6 print(); 7 8 return 0 ; 9 } 此时使用 在终端直接使用gcc gcc main.c hw.c hw.h 生成 a.out 和 hw.h.gch 使用make 编写makefile文件 build : main.o hw.o gcc - o build main.o hw.o main.o : main.c hw.h gcc -g - c main.c hw.o : hw.c hw.h gcc -g - c hw.c clean : rm main.o hw.o PS:clean下的代码需要使用 make clean 才调用   -g :调试使用 { /*