总所周知make一般需要Makefile才能编译相关源码,但也可以无需Makefile就能编译一些简单的源代码。

在算法竞赛里,一道题的源程序一般只有一个文件,此时用Makefile显得十分累赘,但如果输入一段长长的编译指令又很费时间

g++ a.cpp -o a

有时,为了使用新特性而要使用较新标准的C++标准,亦或者增加调试信息或者开Wall,此时应该输入

g++ a.cpp -std=c++17 -g -Wall -o a

显得十分的长且费时。幸运的是,make有个默认的编译配置,在MacOS中,我只要输入

make a
# make magically runs 'c++ a.cpp -o a'

它会默认调用c++编译器进行编译源码a.cpp,而无需我输入那一长串的编译命令。

但由于我想修改这个默认配置,也即采用C++ 17标准,增加其他的一些C++ flag(比如-g -Wall -Dqwq),或者增加静态库动态库链接,甚至修改编译器为g++。这些可以通过增加环境变量进行修改。

编辑~/.bash_profile(或者~/.bashrc, ~/.zshrc,取决于自己所用的终端),添加以下环境变量

export CC="gcc"
export CXX="g++"
export LDFLAGS="-L/opt/homebrew/opt/llvm/bin"
export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
export CXXFLAGS="-std=c++17 -g -Wall"
export CFLAGS="-std=c17 -g -Wall"

依此下来,

  • CC配置C编译器
  • CXX配置C++编译器
  • LDFLAGS配置动态链接库地址
  • CPPFLAGS配置Flag,对C和C++都生效
  • CXXFLAGS配置Flag,仅对C++生效
  • CFLAGS配置Flag,仅对C生效

重新source下配置文件或者重启终端后,再次输入make a编译a.cpp就会得到

make a
# make runs 'g++ -std=c++17 -g -Wall -I/opt/homebrew/opt/llvm/include -L/opt/homebrew/opt/llvm/bin a`.cpp -o a'

如果是a.c则是

make a
# make runs 'gcc -std=c17 -g -Wall -I/opt/homebrew/opt/llvm/include -L/opt/homebrew/opt/llvm/bin a.c -o a'

这正是我们需要的,于是当用命令行编译单个文件时,我们仅需要输入make <sourceCode>就可以了!

以上方法适用于Linux和MacOS,Windows的话应该在系统环境变量里添加上述环境变量名和对应的值,重启下终端就可以了。

当然,配置的编译器gcc和g++也要确保在环境变量中,或者输入gcc或g++的绝对路径也可以。

make小tip的更多相关文章

  1. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  2. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  3. CSS小tip整理

    CSS小tip整理 1.利用css在列表靠头和末尾添加箭头: /* 左箭头*/ ol a[rel="prev"]:before { content: "\00AB&quo ...

  4. 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动——张鑫旭

    小tip:CSS vw让overflow:auto页面滚动条出现时不跳动 这篇文章发布于 2015年01月25日,星期日,23:08,归类于 css相关. 阅读 46274 次, 今日 91 次 by ...

  5. 小tip: 某简单的字符重叠与图形生成----张鑫旭

    引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...

  6. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

        小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...

  7. 【小TIP】记录各种错误【更新中】

    最好程序一遍通过,为了提高代码能力,这里将用TIP的形式记录来犯过的错误.不断更新中. *已经转移到闪存.. [150214]WA:检查是否数组开小了. [150212]WA:如果程序中有乘号,需要留 ...

  8. 几个加速Swift开发的小tip

    又是周五了,周末不要浪,一起学点Swift!本周再次为大家带来了一些Swift的小技巧,都是些奇淫巧计,不知道也无妨,但Swift最吸引我的一点就是它的简洁易用.主要内容有: private(set) ...

  9. 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动

    原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水平居中布局,主体定个宽 ...

  10. 小tip:纯CSS让overflow:auto页面滚动条出现时不跳动

    本文转载于张鑫旭博客,原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水 ...

随机推荐

  1. 初识python 之 自动拆分转换文本内容

    上一篇升级版,转换文件内容. #!/user/bin env python # author:Simple-Sir # time:2021/7/9 23:32 def txt_2_list(filen ...

  2. Arrays.sort实现原理

    Collections.sort方法底层就是调用的array.sort方法 比较器的方式 TimSort static void sort(Object[] a, int lo, int hi, Ob ...

  3. Hive的基本概念和常用命令

    原文链接: https://www.toutiao.com/i6766571623727235595/?group_id=6766571623727235595 一.概念: 1.结构化和非结构化数据 ...

  4. java mapreduce实现网站PV分析

    原文链接: https://www.toutiao.com/i6765677128022229517/ PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次. ...

  5. Java在linux环境下和windows环境下日期字符串显示不同

    图片如果损坏,点击链接: https://www.toutiao.com/i6511565147322974724/ 出现的现象: 在Java中我想要将当前的时间格式化为需要的字符串,然后存放到数据库 ...

  6. [javaweb]strut2-001漏洞分析

    Strut2-001 漏洞描述 框架解析JSP页面标签时会对用户输入的Value值获取,在获取对应的Value值中递归解析%{.}造成了二次解析,最终触发表达式注入漏洞,执行任意代码 影响版本 2.0 ...

  7. 【数据结构与算法】蓄水池抽样算法(Reservoir Sampling)

    问题描述 给定一个数据流,数据流长度 N 很大,且 N 直到处理完所有数据之前都不可知,请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出 m 个不重复的数据. 比较直接的想法是利用随机数算 ...

  8. elasticsearch算法之词项相似度算法(一)

    一.词项相似度 elasticsearch支持拼写纠错,其建议词的获取就需要进行词项相似度的计算:今天我们来通过不同的距离算法来学习一下词项相似度算法: 二.数据准备 计算词项相似度,就需要首先将词项 ...

  9. 多线程-线程间通信-多生产者多消费者问题(JDK1.5后Lock,Condition解决办法及开发中代码范例)

    1 package multithread4; 2 3 import java.util.concurrent.locks.Condition; 4 import java.util.concurre ...

  10. 机器学习-softmax回归 python实现

    ---恢复内容开始--- Softmax Regression 可以看做是 LR 算法在多分类上的推广,即类标签 y 的取值大于或者等于 2. 假设数据样本集为:$\left \{ \left ( X ...