目录
1--CMakeLists.txt重要指令:
① cmake_minimum_required-指定CMake的最低版本要求:
② project-定义项目工程名称:
③ set-显式地定义变量(可用于表示特定路径):
④ include_directories-指定特定头文件的搜索路径:
⑤ link_directories-指定特定库文件的搜索路径:
⑥ add_library-生成库文件:
⑦ add_compile_options-添加编译参数:
⑧ add_executable-生成可执行文件:
⑨ target_link_libraries-指定链接的共享库:
⑩ 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--参考
# 指定CMake的最低版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)
# 定义项目名称为Test
project(Test)
# 定义SRC变量,其值为Test1.cpp
set(SRC Test1.cpp)
# 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)
# 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib)
注:动态使用SHARED,静态使用 STATIC
# 通过变量 SRC 生成 libhello.so 共享库
add_library(hello SHARED ${SRC})
# 添加编译参数 -Wall -std=c++11 -O2
add_compile_options(-Wall -std=c++11 -O2)
# 编译main.cpp生成可执行文件main
add_executable(main main.cpp)
# 将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)
# 添加src子目录,src中需有一个CMakeLists.txt
add_subdirectory(src)
# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})
表示:gcc编译选项
表示:g++编译选项
表示:编译类型(Debug、Release)
表示:三个变量指代内容一致,如果是in source build则表示工程顶层目录,如果是out-of-source编译则表示工程编译发生的目录。
表示:表示工程顶层目录
表示:指定C编译器
表示:指定C++编译器
表示:可执行文件的输出路径
表示:库文件的输出路径
① 编写CMakeLists.txt
② 执行 cmake PATH 命令生成Makefile
注:PATH为顶层CMakeLists.txt所在的目录
③ 执行make命令进行编译
基于VSCode和CMake实现C/C++开发 | Linux篇