栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

cmake 简单使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cmake 简单使用

cmake文件基本结构

文件名 CMakeLists.txt

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
简单使用技巧

保存安装和编译信息

make | tee LOG_make.txt
make install | LOG_install.txt
make >& LOG_make.txt
make install >& LOG_install.txt

C++ 版本设置

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")
   add_definitions(-DCOMPILEDWITHC17)
   message(STATUS "Using flag -std=c++17.")
elseif(COMPILER_SUPPORTS_CXX14)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++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")
   add_definitions(-DCOMPILEDWITHC11)
   message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++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()

编译器设置

set (CMAKE_C_COMPILER "/usr/bin/gcc-9")
set (CMAKE_CXX_COMPILER "/usr/bin/g++-9")

生成路径设置

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

指定 Module 查找路径

list(APPEND CMAKE_MODULE_PATH /home/ubuntu-segate/apps/g2o/cmake_modules)
find_package( CSparse)
MESSAGE("CSparse: lib: " ${CSPARSE_LIB} " include: " ${CSPARSE_INCLUDE_DIR})

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

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}
)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号