gpt4 book ai didi

c++ - 烤饼;汇编器的构造变量包含目录;

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:23 26 4
gpt4 key购买 nike

我想知道是否有一些等效于 CPPPATH 的汇编程序文件编译?

CPPPATH=include_dirs

适用于 .cpp 文件,但似乎不适用于 .S 文件。我收到类似“没有这样的文件或目录”的错误消息

那么是否存在某种“ASPATH”?

谢谢

PS:作为目前的解决方法,我将 ASFLAGS-I/my_path 一起使用,但我不太喜欢它...

添加:
这种方法有效(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/ProductXYZ/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)

最佳答案

应该没有必要的变通方法,您也可以将 CPPPATH 用于汇编程序(as/gas)。运行简单的 SConstruct

env = Environment()
print env.Dump()

作为“scons | grep AS”你看到(除其他外)“ASPPCOM”的定义

'ASPPCOM': '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES'

以及它如何使用变量“$CPPFLAGS”、“$_CPPDEFFLAGS”和“$_CPPINCFLAGS”。后者选择“CPPPATH”,因为它被定义为 (run scons | grep CPPINCFLAGS)

'_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'

我怀疑您的构建脚本中存在一些其他错误(as 未在 PATH 中找到?),但如果不看到 a) 您的 SConstruct,这是不可能的, b) 你如何调用 scons 和 c) 完整的逐字错误消息。

也许您想加入我们并通过 scons-users@scons.org 订阅我们的用户邮件列表(参见 http://scons.org/lists.html)?我们可以在那里进一步讨论这个问题,有很多知识渊博的用户可以帮助您解决问题(并非所有人都活跃于 SO)。

关于c++ - 烤饼;汇编器的构造变量包含目录;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com