如何使用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)

        点击左侧三角按钮可以直接运行(或者选择右侧的命令进行)

 

posted @ 2025-03-08 12:34  freshman_xy  阅读(63)  评论(0)    收藏  举报  来源