アセンブラファイルのコンパイルにはCPPPATH
相当のものがありますか? .cpp
ファイルのために完璧に動作しますが、.S
ファイルには適用されませんようだScons;アセンブラインクルードディレクトリの構築変数。
CPPPATH=include_dirs
。 「そのようなファイルやディレクトリがありません」というエラーメッセージが表示される
「ASPATH」のようなものがありますか?
おかげ
PS:回避策として、現在、私は-I/my_path
でASFLAGS
を使用しますが、私は本当にそれのようにしないでください...
を追加しました:
は、このアプローチ作品(ASFLAGS)
asm_dirs = '-I' + gen_build_dir + gen_file_dir + ' ' #relative path here
as_flags = asm_dirs + env['ASFLAGS']
t = env.Program('boot.elf', sources, CPPPATH=include_dirs, LIBPATH=lib_dirs, LIBS=libs, ASFLAGS=as_flags,
LINKFLAGS=link_flags)
このアプローチでは(CPPPATH)
include_dirs += [ #add path to 'CPPPATH'
gen_build_dir + gen_file_dir + ' '
]
t = env.Program('boot.elf', sources, CPPPATH=include_dirs, LIBPATH=lib_dirs, LIBS=libs, LINKFLAGS=link_flags)
詳細なスクリプト:
asm_cppflags = ('-S -Wno-invalid-offsetof ')
gen_build_dir = 'build/Italy4K6/rel/'
gen_file_dir = 'OS/UserAccess/'
gen_file_name = 'UserAccess_HandleSysCall_ConstGen'
src_full_name = gen_file_dir + gen_file_name + '.cpp'
obj_full_name = gen_build_dir + gen_file_dir + gen_file_name + '.o'
dst_full_name = gen_build_dir + gen_file_dir + gen_file_name + '.h'
a = env.Object(src_full_name, CPPFLAGS=asm_cppflags, CPPPATH=include_dirs)
gen = env.Command(target = "HEADER", source = "",
action = "cat " + obj_full_name + " | " + gen_script + " > " + dst_full_name)
Depends(gen, a)
asm_dirs = '-I' + gen_build_dir + gen_file_dir + ' '
as_flags = asm_dirs + env['ASFLAGS']
link_script = 'Targets/LinkerScripts/%s.ld' % product
link_flags = ('-nodefaultlibs -nostartfiles -Wl,-T -Wl,%s -Wl,-Map -Wl,LINK.MAP ' % link_script) + env['LINKFLAGS']
t = env.Program('boot.elf', sources, CPPPATH=include_dirs, LIBPATH=lib_dirs, LIBS=libs, ASFLAGS=as_flags,
LINKFLAGS=link_flags)
Depends(t, link_script)
あなたはどのアセンブラを使用していますか?どのプラットフォーム? – bdbaddog
アセンブラfor ARM、GNU GCC toolchain、Mac OS版。 – user3124812