# cmake01 **Repository Path**: jonnyjiang/cmake01 ## Basic Information - **Project Name**: cmake01 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-21 - **Last Updated**: 2024-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cmake构建脚本 ## 构建指令 ```shell cmake . make ``` ## 交互 服务提供者 与 服务使用者 通过 头文件进行交互。 最终服务提供者需要生产出链接库,服务使用者在构建的时候需要链接库。 ## 服务提供者构建 服务提供者首先提供头文件,然后实现头文件对应的功能。 最后需要构建出链接库给其他人使用 ```txt # cmake version cmake_minimum_required(VERSION 3.10) # 项目名称 project(cmake01) # 整合源文件 aux_source_directory(${PROJECT_BINARY_DIR}/../src SRC_LIST) # 引入头文件路劲 include_directories(${PROJECT_BINARY_DIR}/../include) # 生成动态、静态库。参数:库名称、库类型、源文件 add_library(caculate_shared SHARED ${SRC_LIST}) add_library(caculate_static STATIC ${SRC_LIST}) # 设置最终生成的库名称。参数:库名称 PROPERTIES OUTPUT_NAME 生成的库名称 set_target_properties(caculate_shared PROPERTIES OUTPUT_NAME "caculate") set_target_properties(caculate_static PROPERTIES OUTPUT_NAME "caculate") # 设置库默认生成到哪里 set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../lib) ``` ## 服务使用者构建 将提供的头文件和链接库配置 在使用功能的地方引入头文件 最后打包的时候需要打上链接库、头文件。 ```txt # cmake version cmake_minimum_required(VERSION 3.10) # 项目名称 project(cmake01) # 整合源文件 aux_source_directory(${PROJECT_BINARY_DIR}/../main SRC_LIST) # 引入头文件路劲 include_directories(${PROJECT_BINARY_DIR}/../include) # 查找库文件 find_library(CACULATE caculate ${PROJECT_BINARY_DIR}/../lib) # 设置可执行文件生成路径 set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin) # 生成可执行文件 add_executable(cmake01 ${SRC_LIST}) # 把库链接到可执行文件中 target_link_libraries(cmake01 ${CACULATE}) ```