CMake的语法简明教程

CMake 语法基础

  • 命令格式:CMake 命令不区分大小写,由命令名称、小括号和参数组成,参数之间使用空格或分号分隔。例如add_executable(MyExecutable main.cpp other_file.cpp)
  • 注释:以#开头的内容为注释,例如# 这是一条注释
  • 变量
    • 定义变量:使用set命令,如set(MY_VAR "Hello World")
    • 使用变量:在大多数情况下,使用${}来引用变量,如message(STATUS "Variable MY_VAR is ${MY_VAR}")
    • 缓存变量set(MY_CACHE_VAR "DefaultValue" CACHE STRING "A cache variable")

CMake 常用命令

  1. cmake_minimum_required:指定 CMake 的最低版本要求,如cmake_minimum_required(VERSION 3.10)
  2. project:定义项目的名称和使用的编程语言,如project(MyProject CXX)
  3. add_executable:指定要生成的可执行文件和其源文件,如add_executable(MyExecutable main.cpp other_file.cpp)
  4. add_library:创建一个库(静态库或动态库)及其源文件,如add_library(MyLibrary STATIC library.cpp)
  5. target_link_libraries:链接目标文件与其他库,如target_link_libraries(MyExecutable MyLibrary)
  6. include_directories:添加头文件搜索路径,如include_directories(${PROJECT_SOURCE_DIR}/include)
  7. target_include_directories:更具体地设置目标的头文件包含路径,如target_include_directories(MyExecutable PRIVATE ${PROJECT_SOURCE_DIR}/include)
  8. install:定义安装规则,如install(TARGETS MyExecutable RUNTIME DESTINATION bin)
  9. if-else-endif:条件语句,如if(CMAKE_BUILD_TYPE STREQUAL "Debug") message("Debug build") endif()
  10. add_custom_command:自定义命令,如add_custom_command(TARGET MyExecutable POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "Build completed.")

 

CMake 教程

  1. 创建项目目录结构:在项目根目录下,通常会有src目录存放源文件,include目录存放头文件,在根目录创建CMakeLists.txt文件。
  2. 编写 CMakeLists.txt
    • 最低版本要求与项目名称定义:cmake_minimum_required(VERSION 3.10)project(MyProject)
    • 添加可执行文件:若src目录下有main.cppadd_executable(MyExecutable src/main.cpp)
    • 添加库:若要创建静态库,add_library(MyStaticLib STATIC src/library.cpp);若要创建动态库,add_library(MySharedLib SHARED src/library.cpp)
    • 链接库:target_link_libraries(MyExecutable MyStaticLib)
    • 添加头文件路径:include_directories(include)target_include_directories(MyExecutable PRIVATE include)
  3. 构建项目
    • 在命令行中进入项目根目录,执行mkdir build创建构建目录。
    • 进入构建目录cd build
    • 运行cmake..生成构建文件。
    • 在 Linux 上执行make命令进行编译,在 Windows 上可以使用cmake --build.或打开生成的 Visual Studio 项目文件进行编译。

 

转载请注明来源,谢谢。

有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:jishurizhi@outlook.com。


老刀的技术日志 » CMake的语法简明教程

发表评论