如何使用CMake制作并使用静态/动态库?
项目工程目录结构如下:
1、安装CMake Tools
2、建立除build文件夹之外的文件夹
3、按 ctrl+shipt+p 显示所有命令,接着输入cmake,点击 CMake:快速入门
看需求选,不选就点确定
4、建议将 main.c 移到 src 目录下,选中 main.c ,接着按 F5 调试,选默认配置
将 program 修改成红线处 (解释:会在 bin 目录下生成可执行文件 main)
5、选中 CMakeList.txt ,按CTRL+shift+B 开始构建,点击配置生成任务
tasks.json 文件如下所示,直接粘贴即可
// tasks.json文件配置
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": []
},
{
"label": "Build", //### launch.json中选择了这个
"dependsOrder": "sequence",
"dependsOn": [
"cmake",
"make"
]
}
]
}
6、在inc目录下创建头文件bar.h和foo.h
同时在src写对应的实现文件bar.c和foo.c ,修改main.c 文件内容如下(调用函数)
除了CMakeLists.txt 的前两行关于版本的不动,将其后面替换为如下内容
# 2.需要的依赖库 现在没有
# 设置源文件
set(SOURCES
src/foo.c
src/bar.c
)
# 3.设置可执行文件与链接库保存的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 5.编译动态库并链接库文件
# 创建静态库
# add_library(mylib_static STATIC ${SOURCES})
#共享库(动态库)
add_library(mylib_shared SHARED ${SOURCES})
# 设置 rpath 仅对共享库生效
set_target_properties(mylib_shared PROPERTIES
INSTALL_RPATH "\$ORIGIN"
BUILD_WITH_INSTALL_RPATH TRUE
)
# 6.创建可执行文件并链接共享库
add_executable(main src/main.c)
# 链接共享库
target_link_libraries(main mylib_shared)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
# 设置 C 编译器为 gcc,并设置 C99 标准选项
set(C_STANDARD 99)
set(CMAKE_C_COMPILER gcc)
include(CPack)
点击左侧三角按钮可以直接运行(或者选择右侧的命令进行)