clion,cmake编译开源项目新手入门

本文详细介绍了CMake中的关键指令及其用法,包括如何利用install命令将库添加到环境变量,findPackage命令的工作原理及configure_file命令的具体应用。同时提供了实际的CMakeLists.txt示例,帮助读者更好地理解并掌握CMake的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cmake

cmake的重要指令

cmake命令

cmake命令指的是通过cmakefile.list编译计划生成编译结果,一般是可执行文件和一些库文件。

对应图像界面位置:

即build工具

在这里插入图片描述

cmake install命令

install命令才会把这些库添加到环境变量中,与这个有关的变量是:CMAKE_INSTALL_PREFIX。
CMAKE_INSTALL_PREFIX默认值在linux系统中位置是/usr/local,windows则是C:/Program Files (x86)

install默认点击debug/run的时候并不会触发,需要一点手动操作。

详情可以参考官网install说明:cmake install clion官网操作说明

对应图像界面位置:

在这里插入图片描述
下图位置可以设置run/debug的时候自动install,具体操作参考上面给出的官网。
在这里插入图片描述

install中的findPackage

作用:在环境变量下查找某个包,查找后的包可以用到后面。

原理:执行FindXXX.cmake程序,这个程序在cmake2.x的时候需要手写,3.x后可以使用自动生成的XXXConfig.cmake来配置找到程序包,XXX是库的名字。

install中的configure_file

该命令将 <input> 指定的文件拷贝为 <output>指定的文件,并将 <input> 文件中 @VAR@ 或 ${VAR} 的位置替换为使用 configure_file() 命令的当前 CMakeLists.txt 中变量 VAR 的值。该命令用于外部文件获取 CMakeLists.txt 文件中变量的值。

configure_file(<input> <output) 中的 <output> 指定的文件名必须是 xxxConfig.cmake 或 xxx-config.cmake(xxx必须为小写)。

cmake install文件demo

完整项目地址:my_oatpp

#######################################################################################
# 生成Target文件,将目标文件 targets 的可导出信息存储在 <export_name> 中(内存),用于生成可导出文件。
install(
    TARGETS ${OATPP_THIS_MODULE_TARGETS}
    EXPORT "${OATPP_MODULE_NAME}Targets"
    ARCHIVE
        DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
        COMPONENT Devel
    LIBRARY
        DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
        COMPONENT Library
    RUNTIME
        DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}"
        COMPONENT Library
    INCLUDES
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
)
# 安装hpp类型文件到include文件夹下
install(DIRECTORY ${OATPP_DIRS_TO_INSTALL}
        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
        COMPONENT Devel
        FILES_MATCHING PATTERN "*.hpp"
)
# 使用生成的导出信息,生成导出目标文件
install(EXPORT "${OATPP_MODULE_NAME}Targets"
        FILE "${OATPP_MODULE_NAME}Targets.cmake"
        NAMESPACE oatpp::
        DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
        COMPONENT Devel
)
###################################################
# packaging Config
include(CMakePackageConfigHelpers)

write_basic_package_version_file("${OATPP_MODULE_NAME}ConfigVersion.cmake"
        VERSION ${OATPP_MODULE_VERSION}
        COMPATIBILITY ExactVersion ## Use exact version matching.
)

## Take module-config.cmake.in file in this direcory as a template

configure_package_config_file(
            "${CMAKE_CURRENT_LIST_DIR}/module-config.cmake.in"
            "${OATPP_MODULE_NAME}Config.cmake"
        INSTALL_DESTINATION
            "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
        PATH_VARS
            OATPP_MODULE_NAME
            OATPP_MODULE_VERSION
            OATPP_MODULE_LIBRARIES
            OATPP_MODULE_LIBDIR
        NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
###################################################

# 安装Config文件
install(
        FILES
            "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake"
            "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake"
        DESTINATION
            "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
        COMPONENT Devel
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值