我使用CMake的out-of-tree构建。我有一个CMake自定义命令,它从proto-files生成 *pb2.py文件。由于proto-files可能驻留在未知数量的子目录(包命名空间)中,如$SRC/package1/package2/file.proto
,那么构建目录将包含类似$BLD/package1/package2/file_pb2.py
的内容。
我想从自动生成的 *pb2.py文件隐式生成包,因此,我想在所有子文件夹($BLD/package1
、$BLD/package1/package2
等)中自动生成__init.py文件,然后安装它们。
我怎么能那样做呢?
- P.S.* 我尝试过CMake : How to get the name of all subdirectories of a directory?中的宏(将GLOB更改为GLOB_RECURSE),但它只返回包含文件的子目录。我无法从上面的示例中获取
package1
子目录。
3条答案
按热度按时间0ejtzxu11#
如果您在 *NIX操作系统(包括mac)下工作,您可以使用shell find命令,如下所示:
或使用python脚本:
u5rb5r592#
以下内容应给予变量
AllPaths
中所需的目录列表:xbp102n03#
下面是https://stackoverflow.com/a/11449316/827437中另一个答案的一行版本:
find $DIR -type d -exec touch {}/__init__.py \;
这将通过执行
touch
命令在$DIR的每个目录中创建一个__init__.py
文件。运行find $DIR -type d
查看将包含该文件的目录。