我不经常使用makefile,因此我只做基本的。我试着阅读如何解决我的问题,但我迷路了。我需要的是一个makefile,有两个目标all和test。这两个目标都需要用g++-std=c+11-wall-werror-ansi-pedantic编译程序,唯一需要编译的文件是main.cpp.当编译器构建可执行文件时,它需要将可执行文件放在一个名为bin的新目录中。我假设如果我要再次使用makefile,它将需要检查bin是否已经创建。我知道如何创建一个简单的makefile,比如all:g++-std=C++11-wall-werror-ansi-pedantic main.cpp
这将在当前目录中创建一个名为a.out的可执行文件,但我对makefile的了解仅限于此
makefile
所做的只是指定构建依赖项,以及为构建这些依赖项而要执行的命令。
比如创建输出目录等。al.本身不是make
的工作,而是由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
就会悄悄地终止,不会出现错误。