我不经常使用makefile,因此我只知道如何制作基本的文件。我尝试阅读有关如何解决我的问题,但我迷路了。我需要的是一个具有两个目标并进行测试的生成文件。这两个目标都需要使用 g++ 编译程序 -std=c+11 -Wall -werror -ansi -pedantic,唯一需要编译的文件是 main.cpp 当编译器构建可执行文件时,它需要将可执行文件放在一个名为 bin 的新目录中。我假设如果我再次使用 makefile,它需要检查 bin 是否已创建。我知道如何创建一个简单的生成文件,例如都: g++ -std=c++11 -wall -werror -ansi -pedantic main.cpp
这会在当前目录中创建一个名为 a.out 的可执行文件,但就我对 makefileS 的了解而言。
Makefile
所做的只是指定构建依赖项,以及为构建这些依赖项而执行的命令。
诸如创建输出目录之类的事情本身并不是make
的工作,而是由执行执行的命令决定的。Makefile
也没有指定生成命令的输出去向。当然,这是由执行的实际命令指定的。例如,对于 gcc
,-o
选项指定编译输出的位置。所以:
all: bin/main
test: bin/main
bin/main: main.cpp
mkdir -p bin
g++ -std=c++11 -Wall -Werror -ansi -pedantic -o bin/main main.cpp
在这些情况下使用mkdir -p
非常方便。如果给定的目录不存在,则创建该目录。如果它已经存在,mkdir
只是悄悄地终止而不会出错。