make小tip
总所周知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的更多相关文章
- 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果
去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...
- [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...
- CSS小tip整理
CSS小tip整理 1.利用css在列表靠头和末尾添加箭头: /* 左箭头*/ ol a[rel="prev"]:before { content: "\00AB&quo ...
- 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动——张鑫旭
小tip:CSS vw让overflow:auto页面滚动条出现时不跳动 这篇文章发布于 2015年01月25日,星期日,23:08,归类于 css相关. 阅读 46274 次, 今日 91 次 by ...
- 小tip: 某简单的字符重叠与图形生成----张鑫旭
引言 字符重叠不是什么稀奇的东西. 如1像素错位模拟阴影效果: 或者powerFloat中展示的带边框三角: 以及其他很多. 但是技术这东西不是豆腐,老了可以吃,臭了也可以吃:那我这里还拿着个说事作甚 ...
- 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]
小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...
- 【小TIP】记录各种错误【更新中】
最好程序一遍通过,为了提高代码能力,这里将用TIP的形式记录来犯过的错误.不断更新中. *已经转移到闪存.. [150214]WA:检查是否数组开小了. [150212]WA:如果程序中有乘号,需要留 ...
- 几个加速Swift开发的小tip
又是周五了,周末不要浪,一起学点Swift!本周再次为大家带来了一些Swift的小技巧,都是些奇淫巧计,不知道也无妨,但Swift最吸引我的一点就是它的简洁易用.主要内容有: private(set) ...
- 小tip:CSS vw让overflow:auto页面滚动条出现时不跳动
原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水平居中布局,主体定个宽 ...
- 小tip:纯CSS让overflow:auto页面滚动条出现时不跳动
本文转载于张鑫旭博客,原文地址:http://www.zhangxinxu.com/wordpress/?p=4552 一.水平居中布局与滚动条跳动的千年难题 当前web届,绝大多数的页面间布局都是水 ...
随机推荐
- 华为云 Kubernetes 管理员实训 四 课后作业
练习一 创建一个Service和一个Pod作为其后端.通过kubectl describe获得该Service和对应Endpoints的信息. Service的名称为<hwcka-004-1-s ...
- react中虚拟DOM
简单来说虚拟DOM就是一个js对象,相对于真实dom来做比较更节约性能,虚拟DOM执行过程如下
- Centos安装与配置
一.安装 默认安装 二.配置 配置网卡 BOOTPROTO=none ONBOOT=yes IPADDR=xxx.xxx.x.xx PREFIX=24 GATEWAY=xxx.xxx.x.x DNS1 ...
- MySQL索引失效的常见场景
当然请记住,explain是一个好习惯! MySQL索引失效的常见场景 在验证下面的场景时,请准备足够多的数据量,因为数据量少时,MySQL的优化器有时会判定全表扫描无伤大雅,就不会命中索引了. 1. ...
- java 报错: MalformedURLException: unknow protocol: f
问题: java 使用 URL 读取文件解读报错 MalformedURLException 1.使用 URL对象解析文件报错MalformedURLException: unknow protoco ...
- ubuntu安装更换阿里云镜像源
如果使用apt-get安装软件过慢,可以考虑以下步骤 1.备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.编辑 sudo vi ...
- PCx安装使用
PCx安装使用 注意:不要到Mittleman的网页下给的那个网站去下载,版本太老,只能在REDHAT操作系统上编译,且不能运行 mkdir PCx cd PCx/ git clone https:/ ...
- golang中浮点型底层存储原理和decimal使用方法
var price float32 = 39.29 float64和float32类似,只是用于表示各部分的位数不同而已,其中:sign=1位,exponent=11位,fraction=52位,也就 ...
- ansible roles实践——安装nginx
1.创建roles 在/etc/ansible/roles目录下 1.1 手动创建需要的目录 1.2 使用命令创建,用不到的目录可以创建为空目录,但不可以不创建. 创建目录[root@master] ...
- sed 模式空间 保持空间
sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的"模式空间(pattern space)",另一个是起辅助作用的"保持空间(hold s ...