makefile /脚本用于小程序

seg*_*ult 0 c++ makefile

我必须经常编译小程序并运行它.因为 g++ -W -Wall file.cpp -o out每次为每个cpp文件编写编译命令都很繁琐,我编写了一个小脚本来编译.

这是我写的脚本

#!/bin/bash
g++ -W -Wall $1 -o $1.out
Run Code Online (Sandbox Code Playgroud)

所以,如果我必须编译file.cpp,我会这样做compile file.cpp ,它将file.cpp.out为我创建可执行文件.并且,这样的file.cpp没有任何头文件或任何其他依赖项.

我知道如何为特定的file.cpp编写makefile(非常简单的情况)

file: file.cpp
    g++ -W -Wall file.cpp -o file
Run Code Online (Sandbox Code Playgroud)

但如果我必须编译file2.cpp,我必须再次更改上面的makefile或写新的.所以,我想要做的是,当我发出make file.cpp命令时,它会将文件生成为可执行文件.当我给 make file2.cpp它时,它会生成file2作为可执行文件,同样适用于其他cpp文件.

lio*_*ori 5

export CXXFLAGS="-W -Wall"
rm Makefile
make file1
Run Code Online (Sandbox Code Playgroud)

Make有理智的默认值.您不必编写makefile来使用make.

Make有一组通用规则,当没有特定规则时会自动应用.其中之一是使用带有来自环境变量CXXFLAGS的标志的C++编译器从'file.cpp'中创建'文件'.这有点像你想要的......

  • 唯一的问题是它每次都依赖于相同的环境。有时,当环境变化时(例如两次海啸之间),意外结果可能难以诊断。我更喜欢仅使用内部定义的标志创建一个Makefile。然后我确切地知道对象是如何构建的。(认为​​它像构建文档一样,我们知道文档很好)。 (2认同)