提问者:小点点

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


我不经常使用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的了解仅限于此


共1个答案

匿名用户

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就会悄悄地终止,不会出现错误。