【c++实用】CMakeLists 基本用法(一)

指令解释

  1. cmake_minimum_required(VERSION 3.24) : 指令指定了所需的最低 CMake 版本

a. 作用: 确保在执行 CMake 配置时,使用的 CMake 版本不低于 3.24。如 果安装的 CMake 版本低于指定的版本,CMake 将会输出错误信息,并拒绝继续执行后续命令
b. 兼容性: 有助于确保项目构建脚本中使用的特性或语法能够在目标环境中正确解析和执行。例如,某些新版本引入的功能在旧版本中可能不可用
c. 可移植性: 通过明确指出所需版本,可以避免因不同开发环境或系统上的 CMake 版本差异而导致的问题

  1. project() : 指令定义了项目的名称, 并设置一系列全局变量,以便在后续的 CMake 配置过程中使用

  2. set(CMAKE_CXX_STANDARD 17) :确保编译器使用对应的编译选项

CMAKE_CXX_STANDARD :
a. 指定 C++ 的编译标准版本;
b. CMake 会自动配置编译器选项,以启用对应标准的支持;
c. 确保在不同的编译器和平台上一致地启用 C++17 功能

  1. add_executable( <目标文件> <源文件1><…>) : 指令用于添加一个可执行目标文件 (目标文件名称自定义)

a. 用来创建一个可执行文件的目标(target)。当你调用这个命令时,你需要指定一个目标名称,并列出用于构建该目标的所有源文件(这些源文件会被链接成一个可执行文件)
b. 当你添加了一个可执行目标后,CMake 会根据你的项目配置生成相应的构建规则

常见问题:

  1. G:…\bin\mingw\bin/ld.exe: CMakeFiles/c___basic.dir/exe/test.cpp.obj:F:/…/…/exe/test.cpp:13: multiple definition of `main’; CMakeFiles/c___basic.dir/exe/demo1.cpp.obj:F:/…/…/exe/demo1.cpp:22: first defined here
    collect2.exe: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.
    编译c++程序出现这个问题,如何解决?

原因:

  1. 报了源文件没有找到对应的目标文件所导致的错误
  2. CMakeList 中要执行的源文件/目标文件名称不止一个(出现同名现象)
    解决方法:
    排查CMakeList文件,将要执行的源文件单独使用 add_executable方法去执行,并给一个单独目标文件名称
cmake_minimum_required(VERSION 3.24)
project(c___basic)
set(CMAKE_CXX_STANDARD 17)
add_executable(demo3 exe/demo1.cpp) 

你可能感兴趣的:(c++)