回答
如果你使用bash作为shell,将这些行添加到〜/ .bashrc。
alias gcc='gcc -Wall'
更新:
你可以参考这个问题上https://superuser.com/questions/519692/alias-gcc-gcc-fpermissive-or-modifying-configure-script
如果你使用make,你需要从.bashrc中内覆盖make的变量CC和CXX: export CC="gcc -wall" export CXX="g++ -wall"
谢谢。这将是问题的正确答案。 – daltonfury42
juzzlin提出一个好方法是为gcc编写一个封装器。 Marc Glisse还建议写一个是实现我想要的最好方法。这就是我所做的。
我做了一个bash脚本,我呼吁GCC:
#!/bin/sh
echo -n "Compiling $1..."
gcc -Wall -Werror -o $(basename $1 .c).out $1
a=$?
if [[ "$a" -eq 1 ]]; then
echo "Failed!"
else
echo "Done."
echo "Executing:"
./$(basename $1 .c).out
fi
然后我复制脚本/usr/bin
并使其可执行:
sudo cp car /usr/bin
chmod +x /usr/bin/car
(脚本的名称是car
这代表“编译并运行”) 所以,无论何时我想编译源文件并运行它,我都会输入:
car mysourcefile.c
我正在考虑简单的'#!/ bin/sh exec gcc -Wall“$ @”'(改变行在'exec'之前),但这就是脚本的美妙之处,如果你喜欢它的写法,那就是它的样子。 –
正如评论中所讨论的那样(尽管它不是对你的问题的直接回答),使用Makefile有很多好处。它提供了一个放置构建命令的地方,如果只使用make
构建,它将始终保持最新状态。它还可以减轻每次构建时的运行测试。
Writing tests is a good habit,即使你只是在做一些小而无意义的作业代码。它可以让你发现一些你会错过的愚蠢错误,并且确保你不会因为修改它而破坏现有的代码(特别是最后一分钟的修改)。
的example这样一个Makefile文件(这里我没有什么可从测试版本除了因为它是一个仅有头组件):
all:
g++ -O2 -Wall -Werror -std=c++11 test_polynomial.cc -o test_polynomial -lgmp
g++ -O2 -Wall -Werror -std=c++11 test_g2polynomial.cc -o test_g2polynomial
./test_polynomial --log_level=test_suite
./test_g2polynomial --log_level=test_suite
clean:
rm -f test_polynomial test_g2polynomial
注意:这个例子是不是因为我不很好的一个t甚至将CFLAGS
中的构建选项分解。如果我想添加一个标志,我必须在两个命令中添加它!
另一个好处是你总是运行make
来构建任何语言,依赖甚至构建系统(当使用scons或其他构建系统处理项目时,我仍然编写一个Makefile来执行我所做的所有命令当建设和测试!)。
这允许我的个人补充(但在这里,我们完全离题):我有一个名为autobuild
的构建脚本在make each time I write a file in vim上循环。我在屏幕上编码并在small window at the bottom of my screen中运行autobuild
。这样,每当我写入文件时,就会建立并测试每个更改。
- 1. 获取默认GCC警告的列表
- 2. 禁用所有gcc警告
- 3. 显示IntelliJ中的所有警告
- 4. 显示PyCUDA中的所有NVCC警告
- 5. Eclipse(Juno)不显示所有警告
- 6. 显示所有错误和警告
- 7. 使GtkScrolledWindow默认显示所有子项
- 8. 警告:现场XXX没有默认值
- 9. javascript:显示警告,如果不匹配
- 10. 您正在使用App ID默认配置警告在配置Identify Providers之后警告IBM Bluemix APPID
- 11. 如何显示解决方案的所有StyleCop警告?
- 12. GCC -WeffC++警告
- 13. gcc:__fread_chk_warn警告
- 14. gnu gcc如何禁止警告:在此声明中忽略'typedef'[默认启用]
- 15. 如何将SBT默认日志级别设置为“警告”?
- 16. 确认之前显示警告
- 17. 如何配置Visual Studio以默认折叠所有区域?
- 18. 如何在JQuery DataTable中默认显示所有行
- 19. GADInterstitial AdMob每次显示默认广告
- 20. 运行没有显示任何警告
- 21. 抑制gcc警告:“警告:这是以前定义的位置”
- 22. Drupal:显示警告
- 23. 警告框显示
- 24. 只有当没有错误GCC警告
- 25. gcc,make:如何禁用失败警告?
- 26. 如何告诉bitbucket默认显示某个变更集?
- 27. 如何让PHPMyAdmin显示MySQL警告?
- 28. 如何在php中显示警告框?
- 29. MySQL工作台:如何显示警告?
- 30. 有没有办法让gcc或clang警告显式演员?
为什么不把它放在makefile中? –
我不确定您是否可以使用-Wall始终开启配置GCC,但您可以创建一个简单的包装脚本,它总是通过-Wall调用实际的gcc并转发其他参数。 – juzzlin
@ IgnacioVazquez-Abrams因为我是一名学生,只使用makefile编译单个文件程序。 – daltonfury42