g++-我包括所有带有头文件的子目录



我刚刚偶然发现了这篇关于编译所有.cpp文件的文章,包括使用linuxfind命令编译子目录中的文件:

g++ -g $(find RootFolderName -type f -iregex ".*.cpp") -o OutputName

这样做的问题是,在执行#include时,所有文件都需要写出它们的相对路径才能工作。你可以通过使用-I标签添加你需要的目录来绕过它:

g++ -g $(find RootFolderName -type f -iregex ".*.cpp") -o OutputName -I ./somePath

但是,如果您有多个子目录,这仍然是一个相当麻烦的问题。是否可以将find再次与其他正则表达式一起使用以包含所有子目录?

是否可以将find与其他正则表达式一起使用以包含所有子目录?

是的,有些项目,如mbed和arduino,似乎包含了所有可能的目录以包含路径。在shell中,假设没有空白,您可以:

find . -type f -iname '*.h' -printf "-I%hn" | sort -u

这在路径中容易出现空白。使用时:

command $(stuff)

将遇到文件名中空格的问题。研究其他方法以及如何处理shell中的空白。更好的是,不要手动编写这样的东西,重新发明轮子,转向构建系统,比如cmake

最新更新