四时宝库

程序员的知识宝库

C++开发:Cmake命令的用法(cmake c++17)

CMake 是一个跨平台的构建系统,它使用配置文件(CMakeLists.txt)来生成本机构建系统(如 Makefiles、Visual Studio 项目等)。下面是一些常用的 CMake 指令及其用法。

1.cmake_minimum_required

指定 CMake 的最低版本要求。

cmake_minimum_required(VERSION 3.10)

2.project

定义项目的名称和版本。

project(MyProject VERSION 1.0)

3.set

定义变量并设置其值。

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

4.add_executable

添加可执行文件。

add_executable(MyProject main.cpp)

5.add_library

添加库文件。

add_library(MyLib mylib.cpp)

6.target_link_libraries

指定目标文件需要链接的库。

target_link_libraries(MyProject PRIVATE MyLib)

7.include_directories

添加包含目录。

include_directories(${PROJECT_SOURCE_DIR}/include)

8.target_include_directories

指定目标文件的包含目录。

target_include_directories(MyLib PUBLIC ${PROJECT_SOURCE_DIR}/include)

9.add_subdirectory

添加子目录(通常用于包含另一个 CMakeLists.txt 文件)。

add_subdirectory(src)

10.find_package

查找并加载外部库或包。

find_package(OpenCV REQUIRED)

11.install

指定安装规则。

install(TARGETS MyProject DESTINATION bin)
install(FILES "${PROJECT_SOURCE_DIR}/include/mylib.h" DESTINATION include)

12.option

定义选项(布尔变量)。

option(BUILD_TESTS "Build the tests" ON)

13.if/else/endif

条件语句。

if(BUILD_TESTS)
    add_subdirectory(tests)
endif()

14.message

打印消息。

message(STATUS "Building MyProject version ${MyProject_VERSION}")

15.configure_file

配置文件。

configure_file(config.h.in config.h)

示例项目的完整CMakeLists.txt

假设你的项目结构如下:

MyProject/
├── CMakeLists.txt
├── main.cpp
├── include/
│   └── mylib.h
└── src/
    ├── CMakeLists.txt
    └── mylib.cpp

顶层CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(MyProject VERSION 1.0)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

include_directories(${PROJECT_SOURCE_DIR}/include)

add_subdirectory(src)

add_executable(MyProject main.cpp)

target_link_libraries(MyProject PRIVATE MyLib)

src/CMakeLists.txt

add_library(MyLib mylib.cpp)

target_include_directories(MyLib PUBLIC ${PROJECT_SOURCE_DIR}/include)

构建和运行项目

  1. 创建并进入 build 目录:
mkdir build
cd build
  1. 运行 cmake 生成构建文件:
cmake ..
  1. 编译项目:
cmake --build .
  1. 运行生成的可执行文件:
./MyProject

通过这些指令和步骤,你可以使用 CMake 来组织和管理一个包含多个子目录的 C++ 项目。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接