在Make文件中,我们有:
TARGET = CAN_PWM_test
BUILD_DIR = build
字符串
第一个月
下
$(BUILD_DIR)/%.o: %.c %.cpp Makefile | $(BUILD_DIR)
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
型
和
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(SZ) $@
型
在Linux中,我接收消息:>make: *** No rule to make target 'build/main.o', needed by 'build/CAN_PWM_test.elf'. Stop.
个
但在Windows与MinGW的作品。我做错了什么?
(full github上的项目:Link)
在Makefile中,我们有类似于windows的GCCPATH,对于Linux,我注解了它。但这没有帮助。
> make -v
GNU Make 4.4.1
Built for x86_64-pc-linux-gnu
型
2条答案
按热度按时间csbfibhn1#
这条规则...
字符串
.描述了如何从对应的.c文件和对应的.cpp文件一起构建一个目标文件。虽然它在这方面是谎言的,因为实际上它只使用.c文件。这个规则不适用于构建一个没有对应的.c文件和对应的.cpp文件的目标文件。
在Linux中,我接收消息:
第一个月
很有可能。
但在Windows与MinGW的作品。
我不相信你。项目的某些方面在双方之间是不同的--也许是makefile,也许是源目录的内容,也许两者都是。这不是同一个“那个”。
我做错了什么?
你编写了一个模式规则,但前提条件不正确。如果你有C和C++源代码的混合,那么你应该为这两个代码分别编写规则。这也会给你提供机会为这些规则编写不同的 * 配方 *,这通常是明智的。
0ejtzxu12#
@John,谢谢你对模式规则的澄清,我不知道它是如何工作的。
你对
I do not believe you
:这条规则是行不通的,但MinGW回答不同:字符串
问题是项目包含C和C++的模块,它们需要一起构建。
正如我从你的回答中理解的那样:我需要制定两个不同的规则来组装.o和.cpp
我会努力的。谢谢你的帮助!