-
这个是 ProjectA 的 xmake.lua 文件,可以看到 target 名称为 add_rules("mode.debug", "mode.release")
target("ProjectA")
set_default(true)
set_kind("shared")
add_files("src/ClassA.cpp")
add_headerfiles("src/ClassA.h") 而这个是生成包的 xmake.lua 文件,可以看到 package 名称为 package("projecta")
set_description("The projecta package")
add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true})
on_load(function (package)
package:set("installdir", path.join(os.scriptdir(), package:plat(), package:arch(), package:mode()))
end)
on_fetch(function (package)
local result = {}
local libfiledir = (package:config("shared") and package:is_plat("windows", "mingw")) and "bin" or "lib"
result.links = "ProjectA"
result.linkdirs = package:installdir("lib")
result.includedirs = package:installdir("include")
result.libfiles = path.join(package:installdir(libfiledir), "libProjectA.so")
return result
end) 我猜测是为了将 为什么要这么做? |
Beta Was this translation helpful? Give feedback.
Answered by
waruqi
Apr 21, 2023
Replies: 1 comment 1 reply
-
目前的包命名规范必须强制小写。也为了更好的跨平台。。 有的文件系统是大小敏感的 (linux),有的系统是大小写不敏感的 (win),还有的系统既可能是敏感,也可能不敏感 (mac) 如果不严格限制成小写,用户随意命名,仓库包多了,正好遇到 如果算同一个,但是大小写不同,仓库里同时存在了4份冗余配置,如果用户系统上是大小写敏感的,那么其实算成了不同的包,也会重复安装4次。。 包的分发是要跨系统,跨用户的。。不是每个用户的系统环境都是跟你这完全一致的。 |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
wanzzhehe
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
目前的包命名规范必须强制小写。也为了更好的跨平台。。
有的文件系统是大小敏感的 (linux),有的系统是大小写不敏感的 (win),还有的系统既可能是敏感,也可能不敏感 (mac)
如果不严格限制成小写,用户随意命名,仓库包多了,正好遇到
Foo
,foo
,fOO
,FOo
等命名的包,你说到底算同一个包, 还是算4个不同的包呢?如果算同一个,但是大小写不同,仓库里同时存在了4份冗余配置,如果用户系统上是大小写敏感的,那么其实算成了不同的包,也会重复安装4次。。
如果不算同一个,用户系统上如果大小写不敏感的,你拉仓库包,4个都拉下来,存哪?一个目录下四个同名文件,直接跪了,各种冲突。。
包的分发是要跨系统,跨用户的。。不是每个用户的系统环境都是跟你这完全一致的。