最近在学习 Linux 下的 C+ 开发的编译知识,总结出该系列笔记,这是第五篇,可以通过以下链接阅读之前的笔记:
1. Linux中编译C++代码的g++工具,以及g++的常用操作指令
在不同的操作系统上,我们可以使用不同的编译工具,比如 windows 中使用 Visual Studio 的开发套件, mac 中使用 xcode 开发套件,Linux 中使用 Makefile 结合 g++ 编译,那如果我们使用 cmake 就可以解决了跨平台的问题。
参数使用小括号包裹起来,参数之间使用空格或者分号隔开。cmake的指令不区分大小写,但是参数严格区分大小写,如下示例
cmake指令的变量使用 ${变量}
的形式读取变量,但在 IF 逻辑判断中,直接输入变量名称即可,如上面示例代码中的 HELLO
cmake_minimum_required
: 指定cmake最小版本要求project
: 定义工程名称,并可以指定工程可支持的语言,语法格式为 project(项目域名 语言)
,如下示例set
: 显示定义变量include_directories
: 向工程中添加多个头文件搜索路径,相当于指定 g++
的 -I
参数link_directories
: 向工程中添加多个库文件搜索路径,相当于 g++
的 -L
参数add_library
: 生成库文件add_compile_options
: 添加编译参数add_excutable
: 生成可执行文件target_link_libraries
: 为目标可执行文件添加需要的共享库add_subdirectory
: 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置aux_source_directory
: 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表。CMAKE_FLAGS
: gcc 编译选项CMAKE_CXX_FLAGS
: g++ 编译选项CMAKE_BUILD_TYPE
: 编译类型(Debug,Release)CMAKE_BINARY_DIR
、PROJECT_BINARY_DIR
、<projectname>_BINARY_DIR
CMAKE_SOURCE_DIR
、PROJECT_SOURCE_DIR
、<projectname>_SOURCE_DIR
CMAKE_C_COMPILE
: 指定C编译器CMAKE_CXX_COMPILE
: 指定C++编译器EXECUTABLE_OUT_PATH
: 可执行文件输出的存放路径LIBRARY_OUTOUT_PATH
: 库文件输出的存放路径