我有一个非常大的make文件项目(c ++),它取决于环境变量构建某些文件并忽略我的源目录中的其他文件。
我想生成一个文件列表,这些文件实际上在make过程中使用了当前的环境设置。即我希望编译所有源文件并打印所有头文件。
我想这样做的原因是能够将所有文件添加到qtcreator项目中,因此只能在我的项目中获取相关文件。
我知道我之前做过这样的事情,但现在我似乎无法在互联网上找到它。
编辑:我很确定这可以在不编辑makefile的情况下实现,在这种情况下,由于make系统的复杂性,这将是更好的选择。该项目涉及很多makefile。
答案 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
参数仅打印匹配的部分,而不是整行。需要打印匹配的源文件名。