总所周知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,对CC++都生效
  • 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>就可以了!

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

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

最新文章

  1. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
  2. placeholder 颜色更改
  3. ab 性能测试工具的使用(Web并发测试)
  4. Windows下Apache的优化
  5. java:正则移出html元素
  6. SharePoint 2013 重复的管理账户错误:已添加项。字典中的关键字 所添加的关键字
  7. CSS 实现:两栏布局(等宽布局)
  8. fancybox去除不受待见的水平滚动条
  9. MongoDB Auto-Sharding(自动分片)入门介绍
  10. 函数(jquery)
  11. PHP用CURL或fsockopen伪造IP和来路(referer)
  12. Python+Django+SAE系列教程14-----使表单更安全
  13. Python之列表&amp;元组&amp;字典
  14. 浅析HTTP协议的请求报文和响应报文
  15. Logstash导入数据到ElasticSearch
  16. mybatis 三剑客 generator配置 、mybatis plugin
  17. 安装Visual Studio开发平台
  18. Codeforces 219C - Color Stripe - [DP]
  19. direct加载之ora-39782一例
  20. javascript:控制一个元素高度始终等于浏览器高度

热门文章

  1. Python_获取全部异常信息
  2. Launch agent by connecting it to the master
  3. idea 更换 maven ,并更换阿里镜像
  4. yii2安装配置完成后,网页打开报错yii\web\Request::cookieValidationKey must be configured with a secret key
  5. 第10组 Beta冲刺 总结(组长)
  6. Echart可视化学习(五)
  7. 彻底剖析JVM类加载机制
  8. nginx+php环境搭建详解(Linux)
  9. “伏魔”赏金 | WebShell检测之「模拟污点引擎」首次公测,邀你来战!
  10. Pyomo+GLPK使用