我正在尝试修改我的Makefile以支持.cpp和.cc,但是,我不断收到错误消息,例如
target `source/systemFuncs.cpp' doesn't match the target pattern
我正在修改一个支持.cc的现有makefile,但我想使其也可以编译.cpp,但是我不确定如何。这最初是一个用于nacl项目的make文件。
如何同时编译.cpp和.cc?
与makefile相关的内容:
x86_32_OBJS:=$(patsubst %.cc,%_32.o,$(CXX_SOURCES))
$(x86_32_OBJS) : %_32.o : %.cc $(THIS_MAKE)
$(CXX) ${INCDIRS} -o $@ -c $< -m32 -O0 -g $(CXXFLAGS)
$(PROJECT)_x86_32.nexe : $(x86_32_OBJS)
$(CXX) -o $@ $^ -m32 -O0 -g $(CXXFLAGS) $(LDFLAGS)
CXX_SOURCES中同时具有.cc文件和.cpp文件,因此它需要能够同时编译
最佳答案
您没有给我们太多帮助,但我会猜测。我认为您已将source/systemFuncs.cpp
添加到CXX_SOURCES
。然后,使这一行:
x86_32_OBJS:=$(patsubst %.cc,%_32.o,$(CXX_SOURCES))
将“.cc”替换为“_32.o”,并保持
source/systemFuncs.cpp
不变。然后,make尝试将此名称输入到预期为“_32.o”的规则中,并崩溃了。尝试这个:
CPP_SOURCES += source/systemFuncs.cpp
x86_32_CPP_OBJS:=$(patsubst %.cpp,%_32.o,$(CPP_SOURCES))
$(x86_32_CPP_OBJS) : %_32.o : %.cpp $(THIS_MAKE)
$(CXX) ${INCDIRS} -o $@ -c $< -m32 -O0 -g $(CXXFLAGS)
运气好的话,这将证明是粗糙但有效的。以后可能会有进一步的改进。
编辑:
如果两组文件名都必须在一个变量(
CXX_SOURCES
)中,则可以这样将它们分开:CC_SOURCES := $(filter %.cc, $(CXX_SOURCES))
CPP_SOURCES := $(filter %.cpp, $(CXX_SOURCES))
这样就足够了吗?
关于compiler-errors - 修改makefile以编译.cc和.cpp文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781417/