默认情况下,运行时gcc test.c
,gcc 会将可执行文件输出为a.exe
. 有没有办法全局覆盖它,以便 gcc 创建test.exe
?
这假设只有一个输入文件 - 否则 gcc 可以选择使用 a.exe,或者使用第一个文件的名称。
这通常是通过 makefile 规则完成的,例如, given test.c
,您将能够执行此操作(即使没有makefile):
make test
Run Code Online (Sandbox Code Playgroud)
同样,g++ 也有预定义的规则,给定test2.cc
,你可以做同样的事情:
make test2
Run Code Online (Sandbox Code Playgroud)
但无论哪种情况,您都可能需要库。这样做是 makefile 的好处(除了提供编译多个对象的方法)。
gcc 本身没有模拟生成文件规则的选项。如果你想要一个工具来做到这一点,你可以制作一个 shell 脚本来处理提到的特殊情况,例如,
#!/bin/sh
for name in "$@"
do
case "$name" in
*.c)
gcc -o $(basename "$name") "$name"
;;
*.cc)
g++ -o $(basename "$name") "$name"
;;
*)
echo "ignoring $name, since it is not one of my files!"
;;
esac
done
Run Code Online (Sandbox Code Playgroud)
但是(请参阅答案的开头),该脚本仅明确了预定义规则为make
您提供的功能。另一方面,您可以修改脚本以添加必要的库,并在一个地方执行此操作(而不是一组 makefile,这似乎是问题所在)。
顺便说一句:gcc 是否自动提供“.exe”后缀(当您不提供时)取决于平台和编译器配置。后缀在类 Unix 平台上没有用,并且在 Cygwin 等相关事物上通常是可选的。
归档时间: |
|
查看次数: |
2937 次 |
最近记录: |