-
-
Notifications
You must be signed in to change notification settings - Fork 784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XMake的add_includedirs功能在Keil/C51的环境中未生效 #3215
Comments
https://github.com/xmake-io/xmake/blob/master/xmake/modules/core/tools/c51.lua 参考 gcc 里面的 xmake/xmake/modules/core/tools/gcc.lua Line 258 in 55c0773
|
刚刚尝试修改了我自己的 -- make the includedir flag
function nf_includedir(self, dir)
local paths = '(' .. dir .. ')'
cprint("${color.warning}%s", paths)
return {"INCDIR" .. path.translate(paths)}
end 但是发现在编译的时候,参数被强制转换为字符串参数
如果把
似乎在其他的地方的代码会对小括号特别处理. 另外还有一个问题是 因为只要
add_rules("mode.debug", "mode.release")
set_defaultarchs("mcs51")
target("test")
add_rules("c51.binary")
set_toolchains("c51")
set_kind("binary")
add_includedirs("inlcude","inlcude1")
add_files("src/*.c")
|
你改成 nf_includedirs 就能取到 dirs ,一个列表 |
使用这个已经解决了列表问题 但是参数在小括号情况下被强制增加引号的问题,有什么方法解决
|
你加个 {} wrap 下再返回, |
是的,我有参考GCC使用花括符进行包括 -- make the nf_includedirs flag
function nf_includedirs(self, dirs)
if #dirs == 0 then
return ""
end
local paths = "("
for key, value in pairs(dirs) do
if key > 1 then
paths = paths .. ";"
end
paths = paths .. path.translate(value)
end
paths = paths .. ")"
return {"INCDIR" .. paths}
end 得出的结果就是如上所示。 |
如果我将脚本代码稍微修改为如下 -- make the nf_includedirs flag
function nf_includedirs(self, dirs)
if #dirs == 0 then
return ""
end
local paths = "["
for key, value in pairs(dirs) do
if key > 1 then
paths = paths .. ";"
end
paths = paths .. path.translate(value)
end
paths = paths .. "]"
return {"INCDIR" .. paths}
end 重新编译代码,则输出是正常的 |
嗯,目前内部对 |
OK |
嗯 等后两天我看下 |
dev 版本,我改了下,你也可以实时,不过我觉得即使啥也不改,就算是带了 |
ok,我试试 |
我已经加上了,试下
|
xmake/xmake/modules/core/tools/c51.lua Line 33 in de6ac8d
这里把 objectfile 放进 然后这里的逻辑去掉 xmake/xmake/modules/core/tools/c51.lua Line 46 in de6ac8d
|
是的,我已经修改了一个版本 |
|
Xmake 版本
v2.7.4+HEAD.8340827ed
操作系统版本和架构
Windows 11 专业版 22H2
描述问题
工程目录文件组织如下
│─xmake.lua
│
├─inlcude\main.h
│
└─src\main.c
相关文件内容
xmake -rv
,得到错误如下将
xmake.lua
中的add_includedirs("inlcude")
去掉并将main.c
代码修改为重新执行编译命令
xmake -rv
,此次编译通过因此,我理解在xmake.lua中通过
add_includedirs
添加头文件搜索路径并未生效。期待的结果
使用
add_includedirs
添加头文件搜索路径,应该可以生效。无需在代码中添加文件头文件相对路径
工程配置
附加信息和错误日志
The text was updated successfully, but these errors were encountered: