Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Gnu从扩展的文件列表中生成目标_Windows_Design Patterns_Makefile_Rules - Fatal编程技术网

Windows Gnu从扩展的文件列表中生成目标

Windows Gnu从扩展的文件列表中生成目标,windows,design-patterns,makefile,rules,Windows,Design Patterns,Makefile,Rules,我正在对某些类型的文件进行分组,如: 大约100个子目录 CC_FILES_TO_BUILD += $(wildcard $(SRC_DIR)/01-Application/*.c) ASM_FILES_TO_BUILD += $(wildcard $(PROJECT_ROOT)/01-Sources/07-Target/01-MC9S12G/04-STARTUP/01-CPL_LIB/*.s) 例如,当我按照规则将CC_文件\u转储到\u BUILD时,我会得到一个很好的文件名列表:

我正在对某些类型的文件进行分组,如:

大约100个子目录

CC_FILES_TO_BUILD += $(wildcard $(SRC_DIR)/01-Application/*.c) 

ASM_FILES_TO_BUILD += $(wildcard $(PROJECT_ROOT)/01-Sources/07-Target/01-MC9S12G/04-STARTUP/01-CPL_LIB/*.s)
例如,当我按照规则将
CC_文件\u转储到\u BUILD
时,我会得到一个很好的文件名列表:

E:\1983_1\02-Safety>make dump-CC_FILES_TO_BUILD
make[1]: Entering directory `E:/1983_1/02-Safety/01-Application'
E:\1983_1\02-Safety\01-Application/01-Sources//01-Application/01-INIT/app_init.c E:\1983_1\02-Safety\01-Application/01-Sources//01-Applicat
ion/02-MAIN/app.c E:\1983_1\02-Safety\01-Application/01-Sources//01-Application/03-FM/fm.c E:\1983_1\02-Safety\01-Application/01-Sources//01
-Application/05-SMCM/SMCM.c E:\1983_1\02-Safety\01-Application/01-Sources//01-Application/06-LIM/LIM.c  E:\1983_1\02-Safety\01-Application/0
 1-Sources//02-Services/01-CanM/can_user.c E:\1983_1\02-Safety\01-Application/01-Sources//02-Services/01-CanM/v_par.c E:\1983_1\02-Safety\01-
 Application/01-Sources//02-Services/01-CanM/vstdlib.c E:\1983_1\02-Safety\01-Application/01-Sources//02-Services/01-CanM/sip_vers.c ...
......make[1]: Leaving directory `E:/1983_1/02-Safety/01-Application'
然后,我通过normalsubst构建新列表,以获得depend和obj文件的对应列表,如:

CC_TO_MAK_BUILD_LIST = $(call unique, $(foreach src,$(CC_FILES_TO_BUILD ),
$(DEP_PATH)\$(basename $(notdir$(subst,\,/,$(SRC)))).$(MAK_FILE_SUFFIX)))
然后我想将这些depend和obj列表用作规则中的目标,如:

$(filter-out $(GCC_IGNORE_LIST), $(CC_TO_MAK_BUILD_LIST)) :$(DEP_OUTPUT_PATH)\\%.$(MAK_FILE_SUFFIX):$(DEPEND_FORCE) |  $(DEPEND_CPP_OPTIONS_FILE) $(DIRECTORIES_TO_CREATE)
$(SEPARATOR) [depend]   $(notdir $@)
$(CPP) @$(DEPEND_CPP_OPTIONS_FILE) -undef -MM -MF "$@" -MT "$(call depend_get_target,$@)" -MT "$@" "$(getSourceFile)" 
那么目标取决于:

depend: $(LIB_TO_MAK_BUILD_LIST) $(CC_TO_MAK_BUILD_LIST) | $(DEPEND_CPP_OPTIONS_FILE) $(DIRECTORIES_TO_CREATE) 
以及输出:

E:\1983_1\02-Safety\01-Application>make depend
* [build]       depend.cpp_options
E:\1983_1\02-Safety\01-Application>

虽然从属文件(*.mak)不存在,但显然没有什么要做的。没有任何力量或谎言能帮我解决这个问题

“抄送”到“制作”列表的内容是什么?您提到了
CC\u FILES\u TO\u BUILD
ASM\u FILES\u TO\u BUILD
,但没有提到该变量。
MAK
也是打字错误吗?此外,您正在显式运行
$(通配符)
您引用的手册部分此时不适用。它谈论的是
*
扩展。你的问题到处都是;我不知道怎么了。请指定(a)您编写的实际生成规则,(b)您正在执行什么“正常子”来创建
CC_to_MAK_BUILD_LIST
,(c)您调用的make命令(如果不仅仅是
make
,则剪切/粘贴),(d)消息打印(请再次剪切和粘贴)和(e)这有什么不对/您预期会发生什么。很抱歉,问题太不清楚了…EtanReisner,我更正为CC_FILES_to_BUILD。CC_to_MAK_BUILD_列表是subst(edited)之后的一个示例。是的,我显式调用了通配符函数。引用不相关。疯狂科学家,我编辑以回答a)-d)注释。e) 我希望调用make depend,make将执行上面的目标($(CC_TO_MAK_BUILD_LIST)),它告诉我们如何构建列出的目标依赖项。希望更清楚。