1.cmake_minimum_required:
设置项目要求的CMake最低版本号,如果当前版本的CMake低于所需的值,它将停止处理项目并报告错误。注意在project
之前调用该命令,一般在CMakeLists.txt文件开头调用。命令格式为:
cmake_minimum_required(VERSION major.minor[.patch[.tweak]]
[FATAL_ERROR]
使用示例:
cmake_minimum_required(VERSION 2.8.5)
2.add_definitions:
为源文件的编译添加由-D引入的宏定义。命令格式为:
add_definitions(-DFOO -DBAR ...)
使用示例:
add_definitions(-DWIN32)
3.add_dependencies:
使顶级目标依赖于其他顶级目标,以确保它们在该目标之前构建。这里的顶级目标是由add_executable
,add_library
或add_custom_target
命令之一创建的目标。
使用示例:
add_custom_target(mylib DEPENDS ${MYLIB})
add_executable(${APP_NAME} ${SRC_LIST})
add_dependencies(${APP_NAME} mylib)
4.add_executable:
使用指定的源文件给项目添加一个可执行文件。命令格式为:
add_executable( [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
source1 [source2 ...])
参数介绍:
name:
该命令调用列出的源文件来构建的可执行目标。 对应于逻辑目标名称,在项目中必须是全局唯一的。构建的可执行文件的实际文件名是基于本机平台的约定。
WIN32:
如果给出WIN32,则在创建的目标上设置属性WIN32_EXECUTABLE。
MACOSX_BUNDLE:
如果给定MACOSX_BUNDLE,将在创建的目标上设置相应的属性。
EXCLUDE_FROM_ALL:
如果给定EXCLUDE_FROM_ALL,将在创建的目标上设置相应的属性。
source:
源码列表。
使用示例:
add_executable(HelloCMake hello_cmake.c)
5.add_library:
使用指定的源文件给项目添加一个库。命令格式为:
add_library( [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
source1 [source2 ...])
参数介绍:
name:
该命令调用列出的源文件来构建的库目标。对应于逻辑目标名称,在项目中必须是全局唯一的。
STATIC:
静态库,在链接其他目标时使用。
SHARED:
动态链接库,运行时加载。
MODULE:
不会被链接到其它目标中,但是可能会在运行时使用dlopen-系列的函数动态链接。
使用示例:
add_library(HelloCMake hello_cmake.c)
6.file:
文件操作相关的命令。命令格式为:
file(WRITE ...)
file(APPEND ...)
file(READ
[OFFSET ] [LIMIT ] [HEX])
file(STRINGS [...])
file( )
file(GLOB
[LIST_DIRECTORIES true|false] [RELATIVE ]
[...])
file(GLOB_RECURSE [FOLLOW_SYMLINKS]
[LIST_DIRECTORIES true|false] [RELATIVE ]
[...])
file(RENAME )
file(REMOVE [...])
file(REMOVE_RECURSE [...])
file(MAKE_DIRECTORY [...])
file(RELATIVE_PATH )
file(TO_CMAKE_PATH "" )
file(TO_NATIVE_PATH "" )
file(DOWNLOAD [...])
file(UPLOAD [...])
file(TIMESTAMP [] [UTC])
file(GENERATE OUTPUT output-file
[CONDITION expression])
file( ... DESTINATION
[FILE_PERMISSIONS ...]
[DIRECTORY_PERMISSIONS ...]
[NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS]
[FILES_MATCHING]
[[PATTERN | REGEX ]
[EXCLUDE] [PERMISSIONS ...]] [...])
file(LOCK [DIRECTORY] [RELEASE]
[GUARD ]
[RESULT_VARIABLE ]
[TIMEOUT ])
使用示例为:
# 查找src目录下所有以hello开头的文件并保存到SRC_FILES变量里
file(GLOB SRC_FILES "src/hello*")
# 递归查找
file(GLOB_RECURSE SRC_FILES "src/hello*")
7.find_file:
查找一个文件的完整路径。命令格式为:
find_file