具有多个目标的Makefile并创建一个带可执行文件的目录

时间:2016-02-02 02:03:40

标签: c++ compilation makefile g++

我不经常使用makefile,因此我只是如何制作基本的。我试过阅读如何解决我的问题,但我迷路了。我需要的是一个makefile,它有两个目标all并测试。这两个目标都需要使用g ++ -std = c + 11 -Wall -Werror -ansi -pedantic编译程序,当需要编译器构建可执行文件时,唯一需要编译的文件是main.cpp名为bin的新目录中的可执行文件。而且我假设如果我再次使用makefile,则需要检查bin是否已经创建。 我知道如何创建一个简单的makefile,如 所有:    g ++ -std = c ++ 11 -Wall -Werror -ansi -pedantic main.cpp

在当前目录中创建一个名为a.out的可执行文件,但就我对makefileS的了解而言,这就是

1 个答案:

答案 0 :(得分:0)

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只是安静地终止而没有错误。