【发布时间】:2015-10-07 19:27:02
【问题描述】:
这类似于Warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated。但是,OP 试图编译头文件。就我而言,我正在尝试生成依赖项:
$ git diff
diff --git a/GNUmakefile b/GNUmakefile
index 791ef05..ce48a59 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -175,6 +176,11 @@ LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
DLLTESTOBJS = dlltest.dllonly.o
+-include GNUmakefile.deps
+
+GNUmakefile.deps:
+ $(CXX) $(CXXFLAGS) -MM *.h *.cpp > GNUmakefile.deps
+
如何使用CXX 构建依赖项同时避免 Clang 警告?
【问题讨论】:
-
即使在执行
-MM时,您可能也不想对 .h 文件执行此操作 - 如果它们未包含在您的 .cpp 文件中,它们(很可能)不需要在依赖项中... -
@Mats - 谢谢。内联函数和静态实现呢?我会得到预期的结果吗?
-
-MM list 根据文件包含的内容为您提供依赖项列表-因此假设您以后不尝试编译 .h 文件,而只关心从 .cpp 制作目标文件文件,在 deps 生成中使用 *.cpp 应该没问题。为了使头文件中的内联函数有用,它们需要在 .cpp 文件中编译,对吧?
-
好吧,
make(或您使用的任何工具)如何知道存在哪些依赖关系?这正是-MM的用途。列出特定源文件包含的包含文件。有些东西,某处需要知道/理解/遵循特定源文件包含的所有头文件......没有快捷方式,某处需要有那个列表...... -
谢谢垫子。这就引出了一个问题,是否有一些工具可以验证源文件中包含的项目是否完整? (很抱歉成为一个帮助吸血鬼。我不能在 SO 上问这个问题)。
标签: c++ makefile dependencies gnu-make