cmake

参考链接:https://blog.csdn.net/whahu1989/article/details/82078563

cmake

CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件CMakeLists.txt去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。

具体操作流程:在CMakeLists.txt目录下执行cmake .命令,cmake命令解析CMakeLists.txt,生成Makefile文件,再执行make命令,生成对应的库文件或者可执行文件。

CMakeLists.txt配置文件如何编写:
预定义变量:
LIBRARY_OUTPUT_PATH		//库输出路径
EXECUTABLE_OUTPUT_PATH	//可执行文件输出路径
PROJECT_SOURCE_DIR		//工程根目录
命令:
cmake_minimum_required(VERSION 3.4.1)	//cmake的最低版本要求
project (demo)						//工程名称:demo
//指定头文件
include_directories (include)				//头文件存放路径,存放到include文件夹
//指定源文件
方式1:
add_executable(main main.c)		//可执行文件main,源文件main.c,当源文件太多时如何添加?使用下面命令,指定路径和变量。
方式2:
aux_source_directory(. VAR)    	//在目录中查找所有源文件。.表示当前路径,VAR变量存放当前路径下的源文件列表。
add_executable(main ${VAR})  	//创建可执行文件,${VAR}调用这个变量时,其实代表的是引用所有源文件名称。当某些源文件不想被添加时?
方式3:
set(VAR ./main.c ./test1.c ./test2.c)	//手动指定变量内容。
add_executable(main ${VAR})		//创建可执行文件,${VAR}调用这个变量时,其实代表的是引用所有源文件名称。

//指定输出路径
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)		//设置库文件输出路径为工程根目录/lib目录。
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) //两个宏定义:可执行文件输出路径,工程根目录/bin
//输出库文件
add_library(libraryname SHARED/STATIC a.c)	//生成库,分别对应库名称,动态/静态库,源文件。
set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)		//设置库文件输出路径为工程根目录/lib目录。
find_library(LIB libraryname HINTS ${PROJECT_SOURCE_DIR}/lib)//在指定目录下查找指定库libraryname,并把库的绝对路径存放到变量里。分别对应变量名称 库名称 HINTS 库路径。库的搜索路径分为:默认搜索路径和附加搜索路径,默认搜索路径是系统环境变量或者lib目录;附加搜索路径是HINTS或PATHS指定的路径。
//链接库文件
target_link_libraries (main ${LIB})	//将目标文件和库文件进行链接。
//其他
add_subdirectory (src) 			//向当前工程添加存放源文件的子目录

可参考目录结构:

demo
├── bin
│   └── main
├── build
│  └── Makefile
├── CMakeLists.txt
├── include
│   └── a.h
├── lib
│   └── liblibraryname.so
└── src
└── main.c
└── a.c

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