【发布时间】:2018-12-25 09:58:26
【问题描述】:
我有一个这样的.mk 示例文件:
CPP_SRCS += \
<FILE_PATH_HERE>/file1.cpp \
<FILE_PATH_HERE>/file2.cpp
OBJS += \
<FILE_PATH_HERE>/file1.o \
<FILE_PATH_HERE>/file2.o
CPP_DEPS += \
<FILE_PATH_HERE>/file1.d \
<FILE_PATH_HERE>/file2.d
<FILE_PATH_HERE>/%.o: <FILE_PATH_HERE>/%.cpp
@echo 'Building file: $<'
@echo 'Invoking: Cross G++ Compiler'
g++ -std=c++11 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
@echo 'Finished building: $<'
@echo ' '
假设我有很多文件,例如 file1.cpp : file99.cpp。现在,在我的 .mk 文件中手动添加相应的 file1.o : file99.o 和 file1.d : file99.d 是没有意义的。
我的问题:有没有更聪明的方法将.cpp 文件映射到.d 和.o ?
【问题讨论】:
-
$(patsubst %.cpp, %.o, $(CPP_SRCS)) -
如果
.cpp和.o有不同的路径怎么办。在这种情况下,我需要将%.cpp 映射到 %.o .. 你有什么想法吗? -
好的,我有个主意,我会写完整的答案
-
$(addprefix my_new_dir/, $(notdir $(CPP_SRCS:.cpp=.o))) -
添加到你自己的
标签: c++ regex makefile wildcard