生成静态库或动态库
修改 Manifest.xml ,添加target
元素。
示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<manifest platform="Z21">
<dependencies>
<package id="easyui" version="0.0.0" />
<package id="log" version="0.0.0" />
<package id="zkhardware" version="0.0.0" />
<package id="zknet" version="0.0.0" />
</dependencies>
<targets>
<!-- 生成libfoo1.a 静态链接库 -->
<target id="foo1" type="staticLibrary">
<header filter="src/foo/hello.h" />
<!-- subdirectory 可指定目标子目录 -->
<header filter="src/foo/hello.h" subdirectory="foo"/>
<source filter="src/foo/hello.cpp" />
</target>
<!-- 生成libfoo2.so 动态链接库 -->
<target id="foo2" type="sharedLibrary">
<header filter="src/foo/hello.h" />
<source filter="src/foo/hello.cpp" />
</target>
</targets>
</manifest>
target
的id
属性表示库名称,type
表示库的类型, staticLibrary 表示静态链接库, sharedLibrary 表示动态链接库。
header
元素 用于指定需要随库提供的头文件,filter
属性表示文件的路径,支持通配符source
元素 用于指定需要编译成库的源文件,filter
属性表示文件的路径,支持通配符
可以根据情况,添加多个 header
及 source
元素
编译项目后,静态链接库和动态链接库将生成到 Release
目录下
添加本地静态链接库或者动态链接库
如果是私有的静态库或者动态库,可以将库文件放到约定的目录下,编译代码时,将自动链接。
- 在项目的
src
目录下,添加dependencies
目录 - 在
dependencies
目录下,添加include
目录, 编译时,该目录视为头文件搜索目录 - 在
dependencies
目录下,添加lib
目录,编译时,会自动链接该目录下所有的静态库及动态库 在
dependencies
目录下,添加lib
目录,编译时,会自动链接该目录下所有的静态库及动态库
(库文件名必须以lib
开头,静态库以.a
作为后缀名,动态库以.so
作为后缀名,否则将忽略)如果
dependencies
目录内,非lib
目录内,存在动态链接库,这些库仅随程序打包,但不参与编译
20240110更新: 如果dependencies
目录下,存在lib-no-link
目录,该目录下的动态链接库仅随程序打包,不参与编译。复制库的头文件到新建的
include
目录下,复制库文件放到lib
目录下
完成后,目录结构类似如下。最后选择项目名,右键,在弹出的上下文菜单中选择
重新构建依赖信息
,再次编译项目,依赖生效。