CMake编译脚本-1:CMakeLists.txt编写常用命令

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_executableadd_libraryadd_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 

你可能感兴趣的:(#,CMake,CMake)