make小tip
2024-10-08 02:29:29
总所周知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++
的绝对路径也可以。
最新文章
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- placeholder 颜色更改
- ab 性能测试工具的使用(Web并发测试)
- Windows下Apache的优化
- java:正则移出html元素
- SharePoint 2013 重复的管理账户错误:已添加项。字典中的关键字 所添加的关键字
- CSS 实现:两栏布局(等宽布局)
- fancybox去除不受待见的水平滚动条
- MongoDB Auto-Sharding(自动分片)入门介绍
- 函数(jquery)
- PHP用CURL或fsockopen伪造IP和来路(referer)
- Python+Django+SAE系列教程14-----使表单更安全
- Python之列表&;元组&;字典
- 浅析HTTP协议的请求报文和响应报文
- Logstash导入数据到ElasticSearch
- mybatis 三剑客 generator配置 、mybatis plugin
- 安装Visual Studio开发平台
- Codeforces 219C - Color Stripe - [DP]
- direct加载之ora-39782一例
- javascript:控制一个元素高度始终等于浏览器高度
热门文章
- Python_获取全部异常信息
- Launch agent by connecting it to the master
- idea 更换 maven ,并更换阿里镜像
- yii2安装配置完成后,网页打开报错yii\web\Request::cookieValidationKey must be configured with a secret key
- 第10组 Beta冲刺 总结(组长)
- Echart可视化学习(五)
- 彻底剖析JVM类加载机制
- nginx+php环境搭建详解(Linux)
- “伏魔”赏金 | WebShell检测之「模拟污点引擎」首次公测,邀你来战!
- Pyomo+GLPK使用