nmake 的makefile如何遍历子目录

时间:2022-03-20 12:45:47
有如下目录结构, 需要使用在makefile 中遍历出test*.h 文件(路径和文件名)。
遍历结果作为一个python脚本(cxxtestgen.py)的输入参数。
gmake 的makefile中执行shell 命令find可以解决。 
但是不清楚nmake 的makefile如何解决?
testcase
├─pub
│  └─include
│          Pub_test.h
│          rr_test.h
├─Rab
│  ├─include
│         Test_Rab.h

└─Rb
    ├─include
    │      Test_Rb.h
 。。。。。《《 还有其他待定目录

9 个解决方案

#1


没必要写遍历程序,直接在开始定义初始变量,初始化这些路径,下面使用就行。
因为路径不会总是变吧。

#2


直接定义,让make命令自己去那些目录下找

#3


例如:
PUB_DIR=testcase\pub
RAB_DIR=testcase\rab
RB_DIR=testcase\rb

下面使用:
。。。/I$(PUB_DIR)/include

#4


肯定也是可以的!
建议你结合VC6:可以生成makefile,你参考一下。
不过,我更建议你用Code::Blocks!

#5


奇怪的需求,一般都是遍历编译下面所有的源码...

#6


谢谢答复
问题让各位见笑了。
我是在搭建一个cxxtest 测试平台。
测试的用例头文件散布在不同的子文件夹中。 Cxxtest 需要对头文件进行扫描, 生成自动注册用例的cpp文件。
因为是个平台, 不知道子目录的名称和数目(规定子目录,推广不是很方便)。
只是规定了头文件的命名Test*.h。
gmake 下的makefile 已经有成功经验。 但是同时引入了cygwin(执行gmake)和VS2005。 
我想仅仅使用vs2005 平台, 使用nmake 的makefile, 替代gmake 的makefile。
但是在遍历子目录时遇到上面的问题。
还请各位多多帮助

#7


引用 4 楼 Loaden 的回复:
肯定也是可以的! 
建议你结合VC6:可以生成makefile,你参考一下。 
不过,我更建议你用Code::Blocks!

我猜想是可以的,ms应该能有解决方法的。
》》》不过,我更建议你用Code::Blocks!
是否可以多解释一下?

#8


up

#9


引用 7 楼 BinaryChen 的回复:
引用 4 楼 Loaden 的回复:
肯定也是可以的!
建议你结合VC6:可以生成makefile,你参考一下。
不过,我更建议你用Code::Blocks!

我猜想是可以的,ms应该能有解决方法的。
》》》不过,我更建议你用Code::Blocks!
是否可以多解释一下?

Code::Blocks是个IDE,貌似可以生成makefile

#1


没必要写遍历程序,直接在开始定义初始变量,初始化这些路径,下面使用就行。
因为路径不会总是变吧。

#2


直接定义,让make命令自己去那些目录下找

#3


例如:
PUB_DIR=testcase\pub
RAB_DIR=testcase\rab
RB_DIR=testcase\rb

下面使用:
。。。/I$(PUB_DIR)/include

#4


肯定也是可以的!
建议你结合VC6:可以生成makefile,你参考一下。
不过,我更建议你用Code::Blocks!

#5


奇怪的需求,一般都是遍历编译下面所有的源码...

#6


谢谢答复
问题让各位见笑了。
我是在搭建一个cxxtest 测试平台。
测试的用例头文件散布在不同的子文件夹中。 Cxxtest 需要对头文件进行扫描, 生成自动注册用例的cpp文件。
因为是个平台, 不知道子目录的名称和数目(规定子目录,推广不是很方便)。
只是规定了头文件的命名Test*.h。
gmake 下的makefile 已经有成功经验。 但是同时引入了cygwin(执行gmake)和VS2005。 
我想仅仅使用vs2005 平台, 使用nmake 的makefile, 替代gmake 的makefile。
但是在遍历子目录时遇到上面的问题。
还请各位多多帮助

#7


引用 4 楼 Loaden 的回复:
肯定也是可以的! 
建议你结合VC6:可以生成makefile,你参考一下。 
不过,我更建议你用Code::Blocks!

我猜想是可以的,ms应该能有解决方法的。
》》》不过,我更建议你用Code::Blocks!
是否可以多解释一下?

#8


up

#9


引用 7 楼 BinaryChen 的回复:
引用 4 楼 Loaden 的回复:
肯定也是可以的!
建议你结合VC6:可以生成makefile,你参考一下。
不过,我更建议你用Code::Blocks!

我猜想是可以的,ms应该能有解决方法的。
》》》不过,我更建议你用Code::Blocks!
是否可以多解释一下?

Code::Blocks是个IDE,貌似可以生成makefile