获取make项目编译和包含的文件列表

时间:2015-05-07 07:31:47

标签: c++ makefile

我有一个非常大的make文件项目(c ++),它取决于环境变量构建某些文件并忽略我的源目录中的其他文件。

我想生成一个文件列表,这些文件实际上在make过程中使用了当前的环境设置。即我希望编译所有源文件并打印所有头文件。

我想这样做的原因是能够将所有文件添加到qtcreator项目中,因此只能在我的项目中获取相关文件。

我知道我之前做过这样的事情,但现在我似乎无法在互联网上找到它。

编辑:我很确定这可以在不编辑makefile的情况下实现,在这种情况下,由于make系统的复杂性,这将是更好的选择。该项目涉及很多makefile。

2 个答案:

答案 0 :(得分:0)

Make in本身无法做到这一点。

通常,添加一个名为“list_files”的目标或类似的目标:

 .phony: list_files
 list_files:
        echo $SOURCES

当然,调整以适应包含您的源列表的变量。

要列出特定文件中包含的文件,您需要使用:

 .phony: list_includes
 list_includes:
      ${CXX} -MM $SOURCES

(这不会列出系统文件中的标题 - 使用单个M选项-M来提供包含的每个文件的完整列表,但这通常没有用,并且会列出很长的列表)

答案 1 :(得分:-1)

“make”本身会打印它执行的所有命令。只需用“cpp”和“h”过滤器grep它们:

make |grep -o -e "\w*\.cpp" -e "\w*\.h"

-o参数仅打印匹配的部分,而不是整行。需要打印匹配的源文件名。