我是靠谱客的博主 拼搏滑板,这篇文章主要介绍cmake 简单使用,现在分享给大家,希望可以做个参考。

cmake文件基本结构

文件名 CMakeLists.txt

复制代码
1
2
3
4
5
6
7
8
cmake_minimum_required(VERSION 3.10) # set the project name project(Tutorial) # add the executable add_executable(Tutorial tutorial.cxx)

指令介绍

名称参数说明
set参数名 值定义变量
add_executable可执行程序名 源文件生成可执行程序
target_link_libraries
messages
find_package
include_directories
include

简单使用技巧

保存安装和编译信息

复制代码
1
2
3
4
5
make | tee LOG_make.txt make install | tee LOG_install.txt make >& LOG_make.txt make install >& LOG_install.txt

C++ 版本设置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Check C++xx support 17,14,11,0x include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX17) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") set(CMAKE_CXX_STANDARD 17) add_definitions(-DCOMPILEDWITHC17) message(STATUS "Using flag -std=c++17.") elseif(COMPILER_SUPPORTS_CXX14) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") set(CMAKE_CXX_STANDARD 14) add_definitions(-DCOMPILEDWITHC14) message(STATUS "Using flag -std=c++14.") elseif(COMPILER_SUPPORTS_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CXX_STANDARD 11) add_definitions(-DCOMPILEDWITHC11) message(STATUS "Using flag -std=c++11.") elseif(COMPILER_SUPPORTS_CXX0X) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") set(CMAKE_CXX_STANDARD 0x) add_definitions(-DCOMPILEDWITHC0X) message(STATUS "Using flag -std=c++0x.") else() message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif()

编译器设置

复制代码
1
2
3
set (CMAKE_C_COMPILER "/usr/bin/gcc-9") set (CMAKE_CXX_COMPILER "/usr/bin/g++-9")

生成路径设置

复制代码
1
2
3
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

指定 Module 查找路径

复制代码
1
2
3
4
list(APPEND CMAKE_MODULE_PATH /home/ubuntu-segate/apps/g2o/cmake_modules) find_package( CSparse) MESSAGE("CSparse: lib: " ${CSPARSE_LIB} " include: " ${CSPARSE_INCLUDE_DIR})

文件批量添加,并移除指定文件

复制代码
1
2
3
4
5
6
7
8
9
file(GLOB G2O_LIB_NAMES /usr/local/lib/libg2o*.so) file(GLOB SUB_SRC ${PROJECT_SOURCE_DIR}/src/*) file(GLOB SUB_INCLUDE ${PROJECT_SOURCE_DIR}/include/*) list(REMOVE_ITEM SUB_SRC ${PROJECT_SOURCE_DIR}/src/user.cpp) add_library(${PROJECT_NAME} SHARED ${SUB_SRC} ${SUB_INCLUDE} )

最后

以上就是拼搏滑板最近收集整理的关于cmake 简单使用的全部内容,更多相关cmake内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部