我们通常使用' make'使用适当的编译器编译单个源文件...
make (file_name_with_no_extension)
例如,使用'制作'编译' abc.cpp'是
make abc
不
make abc.cpp
(下面应该打印消息" abc.cpp&#34没什么可做的;)
所以当同一目录中有两个文件时,例如" abc.c"和" abc.cpp",
make abc
将永远,并且只编译" abc.c"(通过某些默认订单?我不知道)。
对于这样的情况,有没有办法用' make'来构建cpp文件?
答案 0 :(得分:0)
此“技巧”仅有效,因为它使用built-in rules that exist in make - 执行make -p
来概述您的make版本中的所有内置插件。你也会看到为什么.c文件“获胜”:)
但是有两个不同的文件,其目标文件名和默认的可执行文件名相同,对我来说是一个非常糟糕的主意,所以我会重命名其中一个文件。
答案 1 :(得分:0)
所以当同一目录中有两个文件时,例如" abc.c"和" abc.cpp",
make abc
将永远,并且只编译" abc.c"(通过一些默认订单?我不知道)。
正确,您可以看到使用make -p -f /dev/null
定义内置规则的顺序,%: %.c
是从单个源直接编译的第一个规则,因此它具有优先级。
从命令行覆盖此方法的一种方法是清除.SUFFIXES
以识别并定义您自己的make --eval=.SUFFIXES: --eval=.SUFFIXES:.cpp abc
,如下所示:
{{1}}