CMake工程实践(一)

本文介绍了如何使用CMake设置源码路径和头文件自动加载,避免每次添加新文件时修改CMakeList.txt。同时讲解了CMake中message和变量的用法,用于构建过程中的调试。还涵盖了include指令的使用,打印编译生成信息的方法,以及如何设置输出路径(包括归档文件、执行程序路径)。最后,文章提到了利用vcpkg库构建工程的步骤。
摘要由CSDN通过智能技术生成

① 设置源码路径自动加载并把头文件包含进工程

 设置工程头文件和源码文件路径后, 让 CMake 自动加载,这样之后即使新增了头文件和源码也不用修改 CMakeList.txt

cmake_minimum_required(VERSION 3.20)
project("auto_add_src")

#设置头文件路径
include_directories("./inc")

#设置源码路径符号
aux_source_directory("." MAIN_SRC)
aux_source_directory("./src" SRC)

#设置编译目标所依赖的源码
add_executable(${PROJECT_NAME} ${MAIN_SRC} ${SRC})

 这样之后在 ./src 目录和 ./inc 目录新增了文件后不用修改以上 CMakeList.txt, 可以直接构建工程编译通过
 假如此时打开工程的话,会发现只有 .cpp 或者 .cc 等文件。假如工程需要包含头文件则需要以下配置:

file(GLOB INC "${INCLUDE_DIR}/*.h")
add_executable(${PROJECT_NAME} ${MAIN_SRC} ${SRC} ${INC})
// INC 可用其他变量名替代

② message 和 变量

 这个主要是用来构建项目时调试使用,通过 message 定位问题。

cmake_minimum_required(VERSION 3.20)
project("auto_add_src")

#cmake 直接退出
message(FATAL_ERROR "FATAL_ERROR")

#cmake 继续, 但是不继续生成工程了
message(SEND_ERROR "SEND_ERROR")

#警告, 并打印位置行号
message(WARNING "WARNING")

#NOTIC 输出字符串
message(NOTIC "NOTIC")

# -- 前缀输出字符串
message(STATUS "STATUS")

  cmake 设置变量给 C++

add_definitions(-D)
//add_definitions(-DSTATIC), 此时会给 源码文件传递一个 STATIC 的宏, 该宏默认为1

③ include 包含

 类似于 C++中头文件包含,用 include 包含文件中的内容替代当前语句

include("test.cmake") // 假如没有找到 test.cmake 就报错退出, 类似于 message(FATAL_ERROR "FATAL_ERROR")
include("test.cmake" OPTIONAL RESULT_VARIABLE ret)
// OPTIONAL             设置当前包含为可选项,假如没有找到该文件不退出
// RESULT_VARIABLE ret  假如找到该文件,ret 为包含文件的绝对路径; 否则为 NOTFOUND. 可通过 message 打印 ret
include

④ 打印编译时的生成信息

 类似于 visual studio 编译时的 output

//方式①:直接在 CMakeList.txt 中设置
set(CMAKE_VERBOSE_MAKEFILE ON)
//方式②:通过命令行 -v
cmake --build <build-path> -v

⑤ 设置输出路径

 a. 归档文件输出路径,主要包含静态库和动态库的符号文件(.lib .a .so)
  通常借助 CMAKE_CURRENT_LIST_DIR (CMakeList.txt的绝对路径)来设置

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY <path>) //这个只对 linux 或者 Mac 有效,设置的是 .so的路径

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY <path>) //.lib 或者 .a 的路径

 b. 执行程序输出目录(.exe .dll)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <path>) //.exe 或者 .dll 的路径

⑥ 使用 vcpkg 库构建工程

cmake -S . -B ./build -DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值