cmake指令

发布时间 2023-06-19 20:33:27作者: 小小灰迪

项目属性

CMAKE_VERSION

cmake_minimum_required(VERSION 3.2)
if(CMAKE_VERSION VERSION_LESS "3")
    add_definitions(-std=c++14)
else()
    # add_definitions(-std=c++14)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()

CMAKE_BUILD_TYPE

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()
message("BUILD TYPE:" ${CMAKE_BUILD_TYPE})

第三方库

编译相关

添加g++标志位

add_definitions

if(CMAKE_VERSION VERSION_LESS "3")
    add_definitions(-std=c++14)
else()
    # add_definitions(-std=c++14)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()

set_target_properties设置可执行文件属性

# 添加可执行文件
add_executable(MyExecutable main.cpp)

# 设置可执行文件的属性
set_target_properties(MyExecutable PROPERTIES
    OUTPUT_NAME "myapp"
    OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
    COMPILE_OPTIONS "-Wall"
    LINK_OPTIONS "-L/some/path"
    INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include"
    LINK_LIBRARIES mylib
)

链接

include_directories

include_directories(${PROJECT_SOURCE_DIR})

文件

获取文件

file

file(GLOB_RECURSE CPP_SOURCES  "*.cpp") # 获取文件路径

get_filename_component

cmake(三十一)Cmake之get_filename_component指令

 get_filename_component(filename ${cpp_name} NAME_WE)    # 获取文件不含扩展名

  • DIRECTORY:文件所在目录
  • NAME:没有目录名的文件名
  • NAME_WE: 没有文件名和扩展名的文件名
  • LAST_EXT:最后一个扩展名
  • NAME_WLE:没有目录和最后一个扩展名的文件名