makefile笔记

  • 字符需要转意,输入字符需要转意,输入字符需要转意,输入$替换
  • x=a b c d 方式直接建立数组,而shell中需要加引号
  • 变量需要用()或{}包围,而shell中只能用{}
  • cd /tmp && you-operation-cmds # 切换目录变执行命令

makefile帮助文档

make - GNU make utility to maintain groups of programs 维护一组程序的工具——流程

SYNOPSIS:make [OPTION]… [TARGET]…

DESCRIPTION:The make utility will determine automatically which pieces of a large program need to be recompiled, and issue the commands to recompile them. The manual describes the GNU implementation of make, which was written by Richard Stallman and Roland McGrath, and is currently maintained by Paul Smith. Our examples show C programs, since they are very common, but you can use make with any programming language whose compiler can be run with a shell command. In fact, make is not limited to programs. You can use it to describe any task where some files must be updated automatically from others whenever the others change.
To prepare to use make, you must write a file called the makefile that describes the relationships among files in your program, and the states the commands for updating each file. In a program, typically the executable file is updated from object files, which are in turn made by compiling source files.
Once a suitable makefile exists, each time you change some source files, this simple shell command:make

suffices to perform all necessary recompilations. The make program uses the makefile description and the last-modification times of the files to
decide which of the files need to be updated. For each of those files, it issues the commands recorded in the makefile.

make executes commands in the makefile to update one or more target names, where name is typically a program. **If no -f option is present, make will
look for the makefiles GNUmakefile, makefile, and Makefile, in that order****.**

Normally you should call your makefile either makefile or Makefile. (We recommend Makefile because it appears prominently near the beginning of a
directory listing, right near other important files such as README.) The first name checked, GNUmakefile, is not recommended for most makefiles.
You should use this name if you have a makefile that is specific to GNU make, and will not be understood by other versions of make. If makefile is ‘-‘, the standard input is read.

make updates a target if it depends on prerequisite files that have been modified since the target was last modified, or if the target does not exist.

OPTIONS

-b, -m
These options are ignored for compatibility with other versions of make.

-B, –always-make
Unconditionally make all targets.
强制运行,无论结果是否存在

-C dir, –directory=dir
Change to directory dir before reading the makefiles or doing anything else. If multiple -C options are specified, each is interpreted relative to the previous one: -C / -C etc is equivalent to -C /etc. This is typically used with recursive invocations of make. 改变工作目录

-d Print debugging information in addition to normal processing. The debugging information says which files are being considered for remaking, which file-times are being compared and with what results, which files actually need to be remade, which implicit rules are considered and which are applied—everything interesting about how make decides what to do. 输出调试信息,如目标是否存在等

–debug[=FLAGS]
Print debugging information in addition to normal processing. If the FLAGS are omitted, then the behavior is the same as if -d was specified.
FLAGS may be a for all debugging output (same as using -d), b for basic debugging, v for more verbose basic debugging, i for showing implicit
rules, j for details on invocation of commands, and m for debugging while remaking makefiles. Use n to disable all previous debugging flags.

-e, –environment-overrides
Give variables taken from the environment precedence over variables from makefiles. 读了环境变量

-f file, –file=file, –makefile=FILE
Use file as a makefile. 指定makefile

-i, –ignore-errors
Ignore all errors in commands executed to remake files. 忽略报错

-I dir, –include-dir=dir
Specifies a directory dir to search for included makefiles. If several -I options are used to specify several directories, the directories are
searched in the order specified. Unlike the arguments to other flags of make, directories given with -I flags may come directly after the
flag: -Idir is allowed, as well as -I dir. This syntax is allowed for compatibility with the C preprocessor’s -I flag. 指定目录搜索makefile

**-j [jobs], –jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the number of jobs that can run simultaneously. 限制运行的进程数量**

-k, –keep-going
Continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependen‐
cies of these targets can be processed all the same.
Manual page make(1) line 40 (press h for help or q to quit) 报错不停止继续往下运行

-l [load], –load-average[=load]
Specifies that no new jobs (commands) should be started if there are others jobs running and the load average is at least load (a floating-
point number). With no argument, removes a previous load limit. 添加负载限制,如96

-L, –check-symlink-times
Use the latest mtime between symlinks and target.

-n, –just-print, –dry-run, –recon
Print the commands that would be executed, but do not execute them (except in certain circumstances). 输出命令而不执行

-o file, –old-file=file, –assume-old=file
Do not remake the file file even if it is older than its dependencies, and do not remake anything on account of changes in file. Essentially
the file is treated as very old and its rules are ignored. 不更新旧的编绎结果

-O[type], –output-sync[=type]
When running multiple jobs in parallel with -j, ensure the output of each job is collected together rather than interspersed with output from other jobs. If type is not specified or is target the output from the entire recipe for each target is grouped together. If type is line the
output from each command line within a recipe is grouped together. If type is recurse output from an entire recursive make is grouped
together. If type is none output synchronization is disabled.

-p, –print-data-base
Print the data base (rules and variable values) that results from reading the makefiles; then execute as usual or as otherwise specified. This
also prints the version information given by the -v switch (see below). To print the data base without trying to remake any files, use make -p
-f/dev/null.

-q, –question
”Question mode”. Do not run any commands, or print anything; just return an exit status that is zero if the specified targets are already up
to date, nonzero otherwise.

-r, –no-builtin-rules
Eliminate use of the built-in implicit rules. Also clear out the default list of suffixes for suffix rules.

-R, –no-builtin-variables
Don’t define any built-in variables.

-s, –silent, –quiet
Silent operation; do not print the commands as they are executed. 不输出命令

-S, –no-keep-going, –stop
Cancel the effect of the -k option. This is never necessary except in a recursive make where -k might be inherited from the top-level make via
MAKEFLAGS or if you set -k in MAKEFLAGS in your environment.

-t, –touch
Touch files (mark them up to date without really changing them) instead of running their commands. This is used to pretend that the commands were done, in order to fool future invocations of make. 运行升级标记而不运行

–trace
Information about the disposition of each target is printed (why the target is being rebuilt and what commands are run to rebuild it).

-v, –version
Print the version of the make program plus a copyright, a list of authors and a notice that there is no warranty. 版本

-w, –print-directory
Print a message containing the working directory before and after other processing. This may be useful for tracking down errors from compli‐
cated nests of recursive make commands.

–no-print-directory
Turn off -w, even if it was turned on implicitly.

-W file, –what-if=file, –new-file=file, –assume-new=file
Pretend that the target file has just been modified. When used with the -n flag, this shows you what would happen if you were to modify that
file. Without -n, it is almost the same as running a touch command on the given file before running make, except that the modification time is
changed only in the imagination of make.

–warn-undefined-variables
Warn when an undefined variable is referenced.

EXIT STATUS
GNU make exits with a status of zero if all makefiles were successfully parsed and no targets that were built failed. A status of one will be
returned if the -q flag was used and make determines that a target needs to be rebuilt. A status of two will be returned if any errors were encoun‐
tered.

SEE ALSO
The full documentation for make is maintained as a Texinfo manual. If the info and make programs are properly installed at your site, the command

          info make

makefile经验笔记相关推荐

  1. ubuntu16.04虚拟win7——经验笔记——问题:Kernel driver not installed (rc=1908) error.

    ubuntu16.04虚拟win7--经验笔记--问题:Kernel driver not installed (rc=1908) error. The VirtualBox Linux kernel ...

  2. Makefile学习笔记 - 我的CPP之路 - C++博客

    Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记 先列出一个很简单的Makefile例子: --------- hd.cpp #incl ...

  3. 北美公司面试经验笔记

    北美公司面试经验笔记 昨天去参加了一场非常有收获的讲座,<师兄带你找offer>. 转载请注明: http://blog.csdn.net/stdcoutzyx/article/detai ...

  4. Makefile 读书笔记

    Makefile 读书笔记[@more@] 编译器只检测程序语法,和函数.变量是否被声明. Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 其中,文件指示.其包括 ...

  5. Makefile学习笔记07|编译静态库并通过ifeq语句

    Makefile学习笔记07|编译静态库并通过ifeq语句   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录   本篇与上一篇有较多联系,有兴趣的可以先看上一 ...

  6. 关于Keil5 jlink 与DFP包安装及排错经验笔记

    关于Keil5 jlink 与DFP包安装及排错经验笔记 折腾Keil5(MDK)起因及目的 起因(比较啰嗦,可以跳过) 由于年后项目开发需要使用jlink来对nRF51822这款蓝牙Soc进行程序烧 ...

  7. Makefile学习笔记06|编译动态链接库

    Makefile学习笔记06|编译动态链接库   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录 静态链接与动态链接   链接分为两种:静态链接.动态链接. 静 ...

  8. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  9. Makefile 学习笔记

    Makefile学习笔记 1. gcc编译过程 预处理 gcc -E hello.c -o hello.i 编译 gcc -S hello.i -o hello.s 汇编 gcc -c hello.s ...

最新文章

  1. 前后端分离接口规范~
  2. 详谈Javascript中的深拷贝和浅拷贝
  3. UTF-8 BOM头
  4. python读取mtcars数据集并实现以下操作_Python可视化43 | plotnine≈R语言ggplot2,43plotnineR...
  5. Python-OpenCV--USB摄像头采集图像并保存到指定文件夹
  6. Kubernetes 编写自定义 controller
  7. while、do while练习——7月24日
  8. pycharm中使用scrapy命命
  9. CCR源码分析-CCR架构
  10. html站点如何命名,html页面的CSS、DIV命名规则
  11. WCF Testing Tool(转)
  12. android paint 线宽_Paint setStrokeWidth方法:设置空心线宽
  13. 移植MyEclipse Web项目到Eclipse变成Java Project的解决办法
  14. ceil函数_pyspark常用函数
  15. matlab pn码捕获,基于PMF_FFT的PN码捕获方法及性能
  16. Android shape自定义形状,设置渐变色
  17. Ensembl数据库简介
  18. 贝塞尔曲线(Bezier Curve)
  19. 2、一个向量乘它的转置,其几何意义是什么?
  20. UNION 和 UNION ALL的区别

热门文章

  1. 这51个大数据术语,你懂的有几个?
  2. 十大流行AI框架和库的优缺点对比
  3. 从0设计一个基于Redis的锁服务
  4. 靠纯技术是否能渡过中年危机
  5. js 对象转json,json转对象
  6. 逻辑结构图向关系转换规则
  7. pre是什么意思css,Precss
  8. python调用js库中的函数_Python 调用JS文件中的函数
  9. 09CSS元素显示模式
  10. 堆排序算法实现思想个人理解