Cmake使用
编写一个bat文件 :
::创建build文件夹,防止污染源目录
mkdir build ||^
cd build &&^
^
::使用cmake创建Makefile文件,再使用make创建可执行文件
cmake -G "MinGW Makefiles" ^
-D CMAKE_MAKE_PROGRAM="路径\make.exe" ../ &&^
make
执行bat文件之后便能在build文件夹內找到exe可执行文件
CMakeLists.txt
cmake_minimum_required(VERSION 3.5) project(my_project_name) add_executable(app main.c add.c)
Cmake语法
将多个文件名打包
set(src_list value1;value2;...)使用方式 :
${src_list}
list(<command> list_name value1 value2 ...) list(LENGTH <list> <output variable>) list(GET <list> <element index> ... <output variable>) list(JOIN <list> <glue> <output variable>) list(FIND <list> <value> <output variable>) list(INSERT <list> <index> <element> ...) list(PREPEND <list> <element> ...) list(POP_BACK <list> [<out-var>...]) list(POP_FRONT <list> [<out-var>...]) list(REMOVE_ITEM <list> <value> [<value> ...]) list(REMOVE_AT <list> <index> [<index> ...]) list(REMOVE_DUPLICATES <list>) list(REVERSE <list>) list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>]) COMPARE : 指定排序方法。有如下几种值可选: STRING : 按照字母顺序进行排序,为默认的排序方法 FILE_BASENAME:如果是一系列路径名,会使用basename进行排序 NATURAL:使用自然数顺序排序 CASE : 指明是否大小写敏感。有如下几种值可选: SENSITIVE : 按照大小写敏感的方式进行排序,为默认值 INSENSITIVE:按照大小写不敏感方式进行排序 ORDER : 指明排序的顺序。有如下几种值可选: ASCENDING : 按照升序排列,为默认值 DESCENDING:按照降序排列
file([GLOB/GLOB_RECURSE] <list_name> <Path and FileType>) GLOB: 将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。 GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。 file(GLOB src_list ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
设置输出路径
#可执行/动态库 set(EXECUTABLE_OUTPUT_PATH ./bin) #静态库/动态库 set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
包含-创建-链接
#包含头文件 include_directories(headpath) #包含源文件, 把dir目录中的所有源文件都储存在var变量中 aux_source_directory(<dir> <variable>) #创建可执行 add_executable(exec_name src1 src2 ...) #创建静态库 add_library(lib_name STATIC src1 src2 ...) #创建动态库 add_library(lib_name SHARED src1 src2 ...) #链接静态库/动态库 link_directories(<static lib path>) link_libraries(<static lib> ...)#全局 target_link_libraries(<exe> <libname> ...)#局部
输出日志
message(<TYPE> "some message...") (无) :重要消息 STATUS :非重要消息 WARNING :CMake 警告, 会继续执行 AUTHOR_WARNING :CMake 警告 (dev), 会继续执行 SEND_ERROR :CMake 错误, 继续执行,但是会跳过生成的步骤 FATAL_ERROR :CMake 错误, 终止所有处理过程
宏
#宏定义 add_definitions(-DDEBUG) #预定义宏 PROJECT_SOURCE_DIR 使用cmake命令后紧跟的目录,一般是工程的根目录 PROJECT_BINARY_DIR 执行cmake命令的目录 CMAKE_CURRENT_SOURCE_DIR 当前处理的CMakeLists.txt所在的路径 CMAKE_CURRENT_BINARY_DIR target 编译目录 EXECUTABLE_OUTPUT_PATH 重新定义目标二进制可执行文件的存放位置 LIBRARY_OUTPUT_PATH 重新定义目标链接库文件的存放位置 PROJECT_NAME 返回通过PROJECT指令定义的项目名称 CMAKE_BINARY_DIR 项目实际构建路径,假设在build目录进行的构建,那么得到的就是这个目录的路径


浙公网安备 33010602011771号