GCC 一起构建对象和依赖项文件
gcc build object and dependency files together
在 Ubuntu 上使用 gcc 4.7.2,我正在使用以下命令编译一些源文件:
g++ -c -o obj/foo.o foo.cpp -O0 -Wall [.. lots of other args .. ]
这工作正常,给了我一个合理的目标文件,obj/foo.o
.但是,如果我还想同时生成依赖项文件:
g++ -c -o obj/foo.o foo.cpp -O -Wall [ .. ] -M -MD -MG -MP -MF obj/foo.dep
然后,当我得到一个看起来完全合理的obj/foo.dep
时,我得到了一个空obj/foo.o
。编译也根本没有输出。查看文档,似乎这应该有效:
-医学博士
如果 -MD 与 -E 结合使用,则任何 -o 开关都被视为指定
依赖输出文件(参见 -MF),但如果在没有 -E 的情况下使用,则每个 -o 被理解为
指定目标对象文件。由于 -E 不是隐含的,因此 -MD 可用于生成依赖输出文件,如下所示
编译过程的副作用。
我没有使用-E
,所以这不应该同时给我一个目标文件和一个依赖输出文件吗?如何确定问题出在哪里?
删除-M
和-MG
选项。来自 gcc 手册页:
将 -M 传递给驱动程序意味着 -E,(...
..-MG
需要-M
,所以你不能保留它。这应该不是问题,因为只有当生成的头文件仍然丢失时-MG
才重要,在这种情况下,您无论如何都无法编译代码。
相关文章:
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 提示存档文件中的动态库依赖项
- 如何在头文件中声明类模板(由于循环依赖关系)
- 对在不同二进制文件中创建的对象文件的依赖关系
- 在链接可执行文件之前查找静态库未解析的依赖项
- 在位置上运行具有依赖项的.exe文件
- 在生成文件中添加源文件并更新依赖项
- 在 Ubuntu 18.04 上,我编译的 cpp 可执行文件找不到 VTK7 依赖项
- cmake:构建依赖于非源文件.Qt帮助生成
- 更改 Cmake 文件以从源代码编译依赖项,而不是使用 FIND_PACKAGE
- g++ 生成依赖项文件缺少用户定义的标头
- 可视C++ - 从链接器>输入>其他依赖项中排除文件
- 正确的生成文件依赖项列表 (C++)
- 具有多个可执行文件和依赖项的生成文件
- 如何找出依赖于LIB文件的DLL列表?
- C++ 查找依赖文件
- C++重建删除依赖文件
- 如何从依赖文件(.d)中消除某些(非系统)标头
- 使用GCC依赖文件会导致Make每次都完全重建项目