我有以下makefile:
all: xmltest
xmltest: xmltest.cpp tinyxml2.cpp tinyxml2.h
这可以正常工作-在执行
make all
可执行文件'xmltest'之后生成。但是,我想将编译器切换到clang ++。所以我在文件的开头添加了这一行:
CXX=clang++
现在执行
make all
会产生错误:clang++ xmltest.cpp tinyxml2.cpp tinyxml2.h -o xmltest
clang++.exe: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated
clang++.exe: error: cannot specify -o when generating multiple output files
<builtin>: recipe for target 'xmltest' failed
make: *** [xmltest] Error 1
如何通过对原始Make文件进行最少的修改来解决此问题?
最佳答案
您不应该将头文件列为翻译单位(那些是cpps)
通常,您应满足.h先决条件:
xmltest.cpp: tinyxml2.h
tinyxml2.cpp: tinyxml2.h
并编译/链接翻译单元:
all: xmltest
xmltest: xmltest.cpp tinyxml2.cpp
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
IIRC您/ might /还可以使用
|
将“仅依赖项”项放在同一行上xmltest: xmltest.cpp tinyxml2.cpp | tinyxml2.h
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
但我现在无法检查