繁体   English   中英

GNU会产生意外行为

[英]GNU make unexpected behaviour

我希望make在跟踪标题更改的目录中构建所有.cpp 我试图通过首先使用-MM选项使gcc输出具有依赖关系的目标,然后将主体追加到将实际调用编译的目标来实现:

OPTIONS = -std=c++11 -Wall

export

all : $(patsubst %.cpp, %.o, $(wildcard *.cpp))


%.o : %.mkt
    make -f $*.mkt

%.mkt : %.cpp
    gcc $(OPTIONS) -MM $*.cpp > $&.mkt1
    echo gcc $(OPTIONS) -c %.cpp > $*.mkt2
    cat $*.mkt1 $*.mkt2 > $*.mkt

然而,不知何故,这个脚本发出了表单的调用

g++ -c -o something.o something.cpp

对于目录中的每个.cpp文件。 不会创建临时文件.mkt1.mkt2.mkt 为什么会这样? 我如何实现理想的行为? 我在mingw的窗户上这样做。

您所提供的两种模式规则链( %.cpp - > %.mkt%.mkt - > %.o ),但让已经有一个隐含规则( %.cpp - > %.o ),它将首先,找到一种构建something.o

解决问题的最简单方法是使用make -r (或make --no-builtin-rules )来禁用内置的隐式规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM