私はmakeまたはmakefileスクリプトについて何も知らないので、誰かが私が何を変更する必要があるかを教えてくれることを望んでいます。他のすべてに含まれている共通のmakefileスクリプトがあり、コードのこの特定の部分は、ソースファイルのリスト(DLL_OBJS)を処理し、それらをコンパイルするためのターゲットを設定する役割を果たしているようです。
ifdef DLL_TARGET
DLL_REAL_OBJS=$(addprefix $(OBJDIR)/, $(DLL_OBJS:=.$(OBJ))) $(DLL_VERSION_OBJS)
DLL_OUTPUT_FILE=$(OBJDIR)/$(LIBPREFIX)$(DLL_TARGET).$(DYNAMIC_LIB_SUFFIX)
$(DLL_OUTPUT_FILE): $(DLL_REAL_OBJS) $(DLL_NONPARSED_OBJS)
$(CC) $(CC_SHARED_LIB_FLAGS) $(LD_DYNAMIC) \
\
$(LD_DASH_O)$(DLL_OUTPUT_FILE) \
\
$(DLL_REAL_OBJS) $(DLL_NONPARSED_OBJS) \
$(DLL_EXTRA) $(PRELIB) $(LD_FLAGS) \
$(DLL_REAL_LIBS) $(DLL_NONPARSED_LIBS) $(LD_LIBS) $(DLL_OPTION)
ifdef EMBED_MANIFEST
ifndef SUPPRESS_MANIFEST_DLL
$(PREMANIFEST) $(MT) \
\
$(MANIFESTFLAGS) /outputresource:"$(DLL_OUTPUT_FILE);#2" /manifest $(DLL_OUTPUT_FILE).manifest
endif
endif
endif # DLL_TARGET
問題は、私がこれを行う場合です:
DLL_OBJS=subdir/main
次に、main.objファイルをに書き込もうとしますがWINNT5.0_DBG.OBJ/subdir/main.obj
、に移動しWINNT5.0_DBG.OBJ/main.obj
ます。上記のコードを変更して、ソースファイルのサブディレクトリ部分をオブジェクトファイルの出力パスから除外するにはどうすればよいですか?変数に変更を加える必要があると思いDLL_REAL_OBJS
ます。
DLL_OBJS
次のようなアイテムのリストである可能性があることに注意してください。
DLL_OBJS=\
subdir/main\
subdir/foo\
bar\
another_source
重要な情報が不足している場合はお知らせください。質問を更新するために最善を尽くします。