静态库和动态库的编译切换

如果你想在同一个target上既编译静态库,又能编译动态库,那么稍微修改下 xmale.lua就行了:

add_target("test")
 
    -- 设置编译target的类型,之前是:static/shared,现在改成动态的
    set_kind("$(kind)")

    -- 添加文件
    add_files(*.c)

好了,现在默认编译的时候,会生成静态库:libtest.a

如果你想生成动态库,只需要执行:


# 简写
xmake f -k shared

# 或者
xmake config --kind=shared

# 编译
xmake

配置成动态库模式,重建下就行了。。参数:-k/--kind 可以手动在配置的时候指定,需要编译的target类型,实际会去影响:

set_kind("$(kind)")

中的$(kind)的配置变量。。

如果你想在target针对static/shared类型,分别处理不同的宏开关,也可以使用 if kinds("static") then 来判断

add_target("test")
 
    -- 设置编译target的类型,之前是:static/shared,现在改成动态的
    set_kind("$(kind)")

    -- 添加文件
    add_files(*.c)

    -- 如果是动态库,则定义宏:SHARED
    if kinds("shared") then
        add_defines("SHARED")
    end

上面说的 -k/--kind配置参数,是xmake内置参数,影响当前工程的所有指定了 $(kind) 的target,如果觉得这样影响面太广,我想让不同的target,在不同的时机切换编译静态库和动态库,可以使用option的接口,自定义一个配置参数:

-- 自定义一个配置参数
add_option("mykind")
    set_option_showmenu(true)
    set_option_description("Set my target kind: static or shared")

add_target("test")
 
    -- 设置编译target的类型,使用 xmake --mykind=static参数
    set_kind("$(mykind)")

    -- 添加文件
    add_files(*.c)

这样,只需要执行xmake f --mykind=shared 就可以使用自己的配置参数,进行切换编译类型了。。


转载于:https://my.oschina.net/tboox/blog/552188

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值