Linux下C++开发笔记--CMakeLists.txt重要指令和CMake常用变量

目录

1--CMakeLists.txt重要指令:

① cmake_minimum_required-指定CMake的最低版本要求:

② project-定义项目工程名称:

③ set-显式地定义变量(可用于表示特定路径):

④ include_directories-指定特定头文件的搜索路径:

⑥ add_library-生成库文件:

⑦ add_compile_options-添加编译参数:

⑧ add_executable-生成可执行文件:

⑩ add_subdirectory-添加源文件的子目录:

⑪ aux_source_directory-将目录下所有源文件列表存储在变量中:

2--CMake常用变量

① CMAKE_C_FLAGS

② CMAKE_CXX_FLAGS

③ CMAKE_BUILD_TYPE

④ CMAKE_BINARY_DIR、PROJECT_BINARY_DIR和_BINARY_DIR

⑤ CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR和_SOURCE_DIR

⑥ CMAKE_C_COMPILER

⑦ CMAKE_CXX_COMPILER

⑧ EXECUTABLE_OUTPUT_PATH

⑨ LIBRARY_OUTPUT_PATH

3--CMake编译流程

4--参考


1--CMakeLists.txt重要指令:

① cmake_minimum_required-指定CMake的最低版本要求:

# 指定CMake的最低版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)

project-定义项目工程名称:

# 定义项目名称为Test
project(Test)

set-显式地定义变量(可用于表示特定路径):

# 定义SRC变量,其值为Test1.cpp
set(SRC Test1.cpp)

include_directories-指定特定头文件的搜索路径:

# 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)
# 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib)

add_library-生成库文件:

注:动态使用SHARED,静态使用 STATIC

# 通过变量 SRC 生成 libhello.so 共享库
add_library(hello SHARED ${SRC})

add_compile_options-添加编译参数:

# 添加编译参数 -Wall -std=c++11 -O2
add_compile_options(-Wall -std=c++11 -O2)

⑧ add_executable-生成可执行文件:

# 编译main.cpp生成可执行文件main
add_executable(main main.cpp)
# 将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)

add_subdirectory-添加源文件的子目录:

# 添加src子目录,src中需有一个CMakeLists.txt
add_subdirectory(src)

aux_source_directory-将目录下所有源文件列表存储在变量中:

# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})

2--CMake常用变量

① CMAKE_C_FLAGS

表示:gcc编译选项

② CMAKE_CXX_FLAGS

表示:g++编译选项

③ CMAKE_BUILD_TYPE

表示:编译类型(Debug、Release)

④ CMAKE_BINARY_DIR、PROJECT_BINARY_DIR和_BINARY_DIR

表示:三个变量指代内容一致,如果是in source build则表示工程顶层目录,如果是out-of-source编译则表示工程编译发生的目录。

⑤ CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR和_SOURCE_DIR

表示:表示工程顶层目录

⑥ CMAKE_C_COMPILER

表示:指定C编译器

⑦ CMAKE_CXX_COMPILER

表示:指定C++编译器

⑧ EXECUTABLE_OUTPUT_PATH

表示:可执行文件的输出路径

⑨ LIBRARY_OUTPUT_PATH

表示:库文件的输出路径

3--CMake编译流程

① 编写CMakeLists.txt

② 执行 cmake PATH 命令生成Makefile

注:PATH为顶层CMakeLists.txt所在的目录

③ 执行make命令进行编译

4--参考

基于VSCode和CMake实现C/C++开发 | Linux篇

你可能感兴趣的:(c++,开发语言)