【问题标题】:Makefile that changes directory then compiles code更改目录然后编译代码的 Makefile
【发布时间】:2016-02-04 03:51:19
【问题描述】:

我在尝试创建位于根目录中的 makefile 时遇到困难,该文件随后将 CD 到另一个名为“code”的目录中,该目录将编译我的代码。此外,可执行文件还需要放置在一个名为“bin”的新目录中,该目录将位于我目前拥有的根目录中:

all: bin/main

test: bin/main

bin/main: main.cpp
    mkdir -p bin 
    g++ -std=c++11 -Wall -Werror -ansi -pedantic -o bin/program main.cpp 

注意:我需要这两个目标并进行测试。但是,只有当我的代码已经在根目录中时,这个 make(上图)才有效

更新:将代码目录重命名为 src,这是新的 makefile

all:
mkdir -p ./bin
g++ -std=c++11 -Wall -Werror -ansi -pedantic  ./src/main.cpp -o./bin/prgm

测试: mkdir -p ./bin g++ -std=c++11 -Wall -Werror -ansi -pedantic ./src/main.cpp -o ./bin/prgm

但是现在我收到此错误“make:*** makefile:是一个目录。停止。” 我是否试图正确运行它?我这样做“$ make”

【问题讨论】:

  • 我在这里看不到实际问题。您对应用程序的要求感到困惑。这不是这里任何人都可以回答的。只有您知道您的应用程序源的布局。一旦你弄清楚你的源代码是什么样子,以及构建需要哪些实际命令,那么编写 Makefile 的任务就开始了。
  • 把 main.cpp 改成 code/main.cpp?
  • 通常的做法是makefile在父目录中工作,你的.cpp文件包含父目录的相对路径。

标签: c++ linux makefile g++


【解决方案1】:

这里是最简单的,你可以做更多的事情,比如让目标all电话等,以保持简单的演示。

all:
    - mkdir -p bin 
    g++ -std=c++11 -Wall -Werror -ansi -pedantic -o bin/program src/main.cpp

希望你能找出目标test

【讨论】:

  • 感谢您的建议,但我仍然收到此错误“make:*** makefile:是一个目录。停止。”我的根目录只包含 Makefile 和代码所在的 src 目录。我不确定这个错误的确切含义以及如何解决它。
  • 您是否在mkdir 前面加上-?如果没有,请这样做
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
相关资源
最近更新 更多