diff options
| author | ruki <[email protected]> | 2017-02-09 09:22:25 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-02-09 09:22:25 +0800 |
| commit | fd16730ec4846ea1acf8cb03d91f0a059d98fddf (patch) | |
| tree | 2e4b09d80a62b0edb2dd4ff0f1a035dd6e591503 | |
| parent | 7bb2d3b070b62c5fce22276c92f342f2647b0a39 (diff) | |
add add_frameworks api
| -rw-r--r-- | CHANGELOG.md | 6 | ||||
| -rwxr-xr-x | docs/zh/manual.md | 67 | ||||
| -rwxr-xr-x | tests/console_objc++/xmake.lua | 7 | ||||
| -rwxr-xr-x | tests/console_objc/xmake.lua | 7 | ||||
| -rwxr-xr-x | xmake/actions/build/main.lua | 2 | ||||
| -rw-r--r-- | xmake/languages/objc++/api.lua | 2 | ||||
| -rwxr-xr-x | xmake/languages/objc++/xmake.lua | 10 | ||||
| -rw-r--r-- | xmake/languages/swift/api.lua | 2 | ||||
| -rwxr-xr-x | xmake/languages/swift/xmake.lua | 9 | ||||
| -rw-r--r-- | xmake/templates/objc++/console/project/xmake.lua | 7 | ||||
| -rw-r--r-- | xmake/templates/objc/console/project/xmake.lua | 7 | ||||
| -rwxr-xr-x | xmake/tools/gcc.lua | 7 | ||||
| -rw-r--r-- | xmake/tools/swiftc.lua | 7 |
13 files changed, 120 insertions, 20 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index fed96e5b0..1c5874e4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,9 @@ * Add app2ipa plugin * Add dictionary syntax style for `xmake.lua` * Provide smart scanning and building mode without `xmake.lua` -* Add `set_xmakever` interface for `xmake.lua` +* Add `set_xmakever` api for `xmake.lua` +* Add `add_frameworks` api for `objc` and `swift` +* Support multi-languages extension and add `golang` language ### Changes @@ -201,6 +203,8 @@ * 为`xmake.lua`工程描述增加dictionay语法风格 * 提供智能扫描编译模式,在无任何`xmake.lua`等工程描述文件的情况下,也能直接快速编译 * 为`xmake.lua`工程描述添加`set_xmakever`接口,更加友好的处理版本兼容性问题 +* 为`objc`和`swift`程序添加`add_frameworks`接口 +* 更加快速方便的多语言扩展支持,增加`golang`程序构建的支持 ### 改进 diff --git a/docs/zh/manual.md b/docs/zh/manual.md index 93f880fc4..9495f4250 100755 --- a/docs/zh/manual.md +++ b/docs/zh/manual.md @@ -384,6 +384,27 @@ target("tbox") 定义和设置子工程模块,每个`target`对应一个子工程,最后会生成一个目标程序,有可能是可执行程序,也有可能是库模块。 +<p class="tip"> +target的接口,都是可以放置在target外面的全局作用域中的,如果在全局中设置,那么会影响所有子工程target。 +</p> + +例如: + +```lua +-- 会同时影响test和test2目标 +add_defines("DEBUG") + +target("test") + add_files("*.c") + +target("test2") + add_files("*.c") +``` + +<p class="tip"> +`target`域是可以重复进入来实现分离设置的。 +<> + | 接口 | 描述 | 支持版本 | | ------------------------------------- | ------------------------------------ | -------- | @@ -446,6 +467,7 @@ target("tbox") | [add_options](#add_options) | 添加关联选项 | >= 2.0.1 | | [add_languages](#add_languages) | 添加语言标准 | >= 1.0.1 | | [add_vectorexts](#add_vectorexts) | 添加向量扩展指令 | >= 1.0.1 | +| [add_frameworks](#add_frameworks) | 添加链接框架 | >= 2.1.1 | ##### target @@ -1403,10 +1425,54 @@ add_vectorexts("sse", "sse2", "sse3", "ssse3") 如果当前设置的指令集编译器不支持,xmake会自动忽略掉,所以不需要用户手动去判断维护,只需要将你需要的指令集全部设置上就行了。 </p> +##### add_frameworks + +###### 添加链接框架 + +目前主要用于`ios`和`macosx`平台的`objc`和`swift`程序,例如: + +```lua +target("test") + add_frameworks("Foundation", "CoreFoundation") +``` + +当然也可以使用[add_mxflags](#add_mxflags)和[add_ldflags](#add_ldflags)来设置,不过比较繁琐,不建议这样设置。 + +```lua +target("test") + add_mxflags("-framework Foundation", "-framework CoreFoundation") + add_ldflags("-framework Foundation", "-framework CoreFoundation") +``` + +如果不是这两个平台,这些设置将会被忽略。 + #### 选项定义 定义和设置选项开关,每个`option`对应一个选项,可用于自定义编译配置选项、开关设置。 +<p class="tip"> +除了`target`以外的所有域接口,例如`option`,`task`等的接口,默认不能放置在外面的全局作用域中的(除非部分跟target共用的接口除外)。 +如果要设置值影响所有`option`,`task`等选项,可以通过匿名全局域来设置。 +</p> + +例如: + +```lua +-- 进入option的匿名全局域,里面的设置会同时影响test和test2选项 +option() + add_defines("DEBUG") + +option("test") + -- ... + +option("test2") + -- ... +``` + +<p class="tip"> +`option`域是可以重复进入来实现分离设置的。 +<> + | 接口 | 描述 | 支持版本 | | ----------------------------------------------- | -------------------------------------------- | -------- | @@ -1458,6 +1524,7 @@ add_vectorexts("sse", "sse2", "sse3", "ssse3") | [add_cxxfuncs](#add_cxxfuncs) | 添加c++库函数接口 | >= 1.0.1 | | [add_languages](#add_languages) | 添加语言标准 | >= 2.0.1 | | [add_vectorexts](#add_vectorexts) | 添加向量扩展指令 | >= 2.0.1 | +| [add_frameworks](#add_frameworks) | 添加链接框架 | >= 2.1.1 | ##### option diff --git a/tests/console_objc++/xmake.lua b/tests/console_objc++/xmake.lua index 00884ee70..a9229c7f3 100755 --- a/tests/console_objc++/xmake.lua +++ b/tests/console_objc++/xmake.lua @@ -21,13 +21,12 @@ if is_mode("release") then set_strip("all") end +-- add frameworks +add_frameworks("Foundation", "CoreFoundation") + -- for macosx or ios if is_os("macosx", "ios") then - -- add framework - add_mxflags("-framework Foundation", "-framework CoreFoundation") - add_ldflags("-framework Foundation", "-framework CoreFoundation") - -- enable arc? add_mxflags("-fobjc-arc") end diff --git a/tests/console_objc/xmake.lua b/tests/console_objc/xmake.lua index fb1c495bf..146262351 100755 --- a/tests/console_objc/xmake.lua +++ b/tests/console_objc/xmake.lua @@ -21,13 +21,12 @@ if is_mode("release") then set_strip("all") end +-- add frameworks +add_frameworks("Foundation", "CoreFoundation") + -- for macosx or ios if is_os("macosx", "ios") then - -- add framework - add_mxflags("-framework Foundation", "-framework CoreFoundation") - add_ldflags("-framework Foundation", "-framework CoreFoundation") - -- enable arc? add_mxflags("-fobjc-arc") end diff --git a/xmake/actions/build/main.lua b/xmake/actions/build/main.lua index 3f8dc460d..14e73b8f7 100755 --- a/xmake/actions/build/main.lua +++ b/xmake/actions/build/main.lua @@ -47,10 +47,8 @@ function main() -- rebuild? if option.get("rebuild") or cache.get("rebuild") then - table.dump(os.match("$(buildir)/**", 'a')) -- clean it first task.run("clean", {target = targetname}) - table.dump(os.match("$(buildir)/**", 'a')) -- reset state cache.set("rebuild", nil) diff --git a/xmake/languages/objc++/api.lua b/xmake/languages/objc++/api.lua index 789f14605..82040a313 100644 --- a/xmake/languages/objc++/api.lua +++ b/xmake/languages/objc++/api.lua @@ -42,6 +42,7 @@ function apis() , "target.add_undefines" , "target.add_defines_h" , "target.add_undefines_h" + , "target.add_frameworks" -- option.add_xxx , "option.add_cincludes" , "option.add_cxxincludes" @@ -62,6 +63,7 @@ function apis() , "option.add_undefines" , "option.add_undefines_if_ok" , "option.add_undefines_h_if_ok" + , "option.add_frameworks" } _g.pathes = { diff --git a/xmake/languages/objc++/xmake.lua b/xmake/languages/objc++/xmake.lua index 1557630ad..0919a8d7c 100755 --- a/xmake/languages/objc++/xmake.lua +++ b/xmake/languages/objc++/xmake.lua @@ -49,6 +49,7 @@ language("objc++") compiler = { "config.includedirs" + , "config.frameworks" , "target.symbols" , "target.warnings" , "target.optimize:check" @@ -57,6 +58,7 @@ language("objc++") , "target.includedirs" , "target.defines" , "target.undefines" + , "target.frameworks" , "option.symbols" , "option.warnings" , "option.optimize:check" @@ -67,9 +69,11 @@ language("objc++") , "option.undefines" , "option.defines_if_ok" , "option.undefines_if_ok" + , "option.frameworks" , "platform.includedirs" , "platform.defines" , "platform.undefines" + , "platform.frameworks" } , linker = { @@ -82,9 +86,13 @@ language("objc++") , "option.linkdirs" , "platform.linkdirs" , "config.links" + , "config.frameworks" , "target.links" + , "target.frameworks" , "option.links" + , "option.frameworks" , "platform.links" + , "platform.frameworks" } , archiver = { @@ -116,7 +124,7 @@ language("objc++") , {nil, "links", "kv", nil, "The Link Libraries" } , {nil, "linkdirs", "kv", nil, "The Link Search Directories" } , {nil, "includedirs","kv", nil, "The Include Search Directories" } - + , {nil, "frameworks", "kv", nil, "The Link Frameworks" } } } diff --git a/xmake/languages/swift/api.lua b/xmake/languages/swift/api.lua index 88d371630..63e1ddbfd 100644 --- a/xmake/languages/swift/api.lua +++ b/xmake/languages/swift/api.lua @@ -34,12 +34,14 @@ function apis() , "target.add_ldflags" , "target.add_arflags" , "target.add_shflags" + , "target.add_frameworks" -- option.add_xxx , "option.add_links" , "option.add_scflags" , "option.add_ldflags" , "option.add_arflags" , "option.add_shflags" + , "option.add_frameworks" } _g.pathes = { diff --git a/xmake/languages/swift/xmake.lua b/xmake/languages/swift/xmake.lua index 1a4409bd2..261039895 100755 --- a/xmake/languages/swift/xmake.lua +++ b/xmake/languages/swift/xmake.lua @@ -46,6 +46,7 @@ language("swift") compiler = { "config.includedirs" + , "config.Frameworks" , "target.symbols" , "target.warnings" , "target.optimize:check" @@ -54,6 +55,7 @@ language("swift") , "target.includedirs" , "target.defines" , "target.undefines" + , "target.frameworks" , "option.symbols" , "option.warnings" , "option.optimize:check" @@ -64,9 +66,11 @@ language("swift") , "option.undefines" , "option.defines_if_ok" , "option.undefines_if_ok" + , "option.frameworks" , "platform.includedirs" , "platform.defines" , "platform.undefines" + , "platform.frameworks" } , linker = { @@ -79,9 +83,13 @@ language("swift") , "option.linkdirs" , "platform.linkdirs" , "config.links" + , "config.frameworks" , "target.links" + , "target.frameworks" , "option.links" + , "option.frameworks" , "platform.links" + , "platform.frameworks" } , archiver = { @@ -114,6 +122,7 @@ language("swift") , {nil, "links", "kv", nil, "The Link Libraries" } , {nil, "linkdirs", "kv", nil, "The Link Search Directories" } , {nil, "includedirs","kv", nil, "The Include Search Directories" } + , {nil, "frameworks", "kv", nil, "The Link Frameworks" } } } diff --git a/xmake/templates/objc++/console/project/xmake.lua b/xmake/templates/objc++/console/project/xmake.lua index d9d4a4ed0..7a56c9d69 100644 --- a/xmake/templates/objc++/console/project/xmake.lua +++ b/xmake/templates/objc++/console/project/xmake.lua @@ -21,13 +21,12 @@ if is_mode("release") then set_strip("all") end +-- add frameworks +add_frameworks("Foundation", "CoreFoundation") + -- for macosx or ios if os("macosx", "ios") then - -- add framework - add_mxflags("-framework Foundation", "-framework CoreFoundation") - add_ldflags("-framework Foundation", "-framework CoreFoundation") - -- enable arc? add_mxflags("-fobjc-arc") end diff --git a/xmake/templates/objc/console/project/xmake.lua b/xmake/templates/objc/console/project/xmake.lua index d2f3d710b..e7724adb5 100644 --- a/xmake/templates/objc/console/project/xmake.lua +++ b/xmake/templates/objc/console/project/xmake.lua @@ -21,13 +21,12 @@ if is_mode("release") then set_strip("all") end +-- add frameworks +add_frameworks("Foundation", "CoreFoundation") + -- for macosx or ios if os("macosx", "ios") then - -- add framework - add_mxflags("-framework Foundation", "-framework CoreFoundation") - add_ldflags("-framework Foundation", "-framework CoreFoundation") - -- enable arc? add_mxflags("-fobjc-arc") end diff --git a/xmake/tools/gcc.lua b/xmake/tools/gcc.lua index 47832580f..6ad26c04e 100755 --- a/xmake/tools/gcc.lua +++ b/xmake/tools/gcc.lua @@ -231,6 +231,13 @@ function nf_linkdir(dir) return "-L" .. dir end +-- make the framework flag +function nf_framework(framework) + + -- make it + return "-framework " .. framework +end + -- make the link command function linkcmd(objectfiles, targetfile, flags) diff --git a/xmake/tools/swiftc.lua b/xmake/tools/swiftc.lua index 4fdca0f18..5b4823416 100644 --- a/xmake/tools/swiftc.lua +++ b/xmake/tools/swiftc.lua @@ -170,6 +170,13 @@ function nf_undefine(macro) return "-Xcc -U" .. macro end +-- make the framework flag +function nf_framework(framework) + + -- make it + return "-framework" .. framework +end + -- make the compile command function compcmd(sourcefile, objectfile, flags) |
