除了静态库,我们也可以通过依赖继承的方式将动态库和可执行程序进行关联,只需要把之前的 xmake.lua 里面的 foo 目标类型改成 shared,就能编译生成动态库,并且自动关联上可执行程序。
我们改成下面的配置。
target("foo")
set_kind("shared")
add_files("src/interface.cpp")
add_defines("TEST", {public = true})
add_includedirs("src", {interface = true})
target("foo_demo")
set_kind("binary")
add_deps("foo")
add_files("src/main.cpp")
然后执行编译运行。
xmake
xmake run
xmake 会生成一个 libfoo.so
动态库程序,然后 foo_demo 会自动链接上这个 so 库,然后运行的时候,也能够自动加载上它。
至于为什么能够自动加载上编译生成的 so 库,那是因为通过 add_deps("foo")
配置的依赖继承关系,在 foo_demo 链接的时候,除了自动加了 -Lxx -lfoo
等链接信息外