CMake命令之项目命令


project

## 设置项目的名称,版本和允许的语言

project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])
project(<PROJECT-NAME>
        [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
        [DESCRIPTION <project-description-string>]
        [LANGUAGES <language-name>...])

add_executable

## 添加一个可执行target.
## <name> target的名称,在项目中全局唯一
##   使用RUNTIME_OUTPUT_DIRECTORY属性,可改变生成target的默认位置
##   使用OUTPUT_NAME属性,可改变生成target的默认名称
## WIN32 设置target的WIN32_EXECUTABLE属性
## MACOSX_BUNDLE 设置target的MACOSX_BUNDLE属性
## EXCLUDE_ROM_ALL add_executable(
<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
## 添加一个导入target,它引用了项目外的一个可执行文件
add_executable(<name> IMPORTED [GLOBAL])
## 添加一个可执行target的别名
add_executable(<name> ALIAS <target>)

add_library

## 添加一个library target
## <name> 指定target的名字,在项目中全局唯一
## STATIC 静态库
## SHARED 动态库
## MODULE "插件库" (Windows resource DLL,托管C++/CLI DLL)
## 怎样添加MACOSX Framework? - 通过设置SHARED/STATIC库target的FRAMEWORK属性。 

add_library(
<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...]
## 添加一个导入的library target,它引用了项目之外的某个库。
## 不会产生build这个目标的代码。
add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED
            [GLOBAL])
## 添加一个Object Library,它用于将源文件编译。
add_library(<name> OBJECT <src>...)

## add_library()和add_executable()可以通过$<TARGET_OBJECTS:name>的方式引用Object Library,作为一个源。
## 例:
add_library(... $<TARGET_OBJECTS:objlib> ...)
add_executable(... $<TARGET_OBJECTS:objlib> ...)
## Alias Libraries 定义别名
add_library(<name> ALIAS <target>)
## Interface Libraries 我不知道
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])

add_dependencies

## 添加顶级target对其他顶级target的依赖。
add_dependencies(<target> [<target-dependency>]...)

顶级target是指用以下命令创建的:add_executable(),add_library(),add_custom_target()。

add_subdirectory

## Add a subdirectory to the build.
## source_dir 指定子目录,子目录中须包含CMakeLists.txt文件和代码文件。
## binary_dir 指定存放输出文件的目录 add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

add_complie_options

## 添加编译选项
add_compile_options(<option> ...)

添加编译选项到编译器的命令行。

作用范围:当前目录下的targets和在此命令之后调用的子目录targets。

添加预处理定义可用它们替代:target_compile_definitions(),add_definitions()

添加包含目录可用它们替代:target_include_directories(),include_directories()

add_definitions

## 编译时添加_D定义项
add_definitions(-DFOO -DBAR ...)

这个命令可用于添加任意标志,但它是为添加预处理定义而设置的。

target_complie_definitions

## 指定编译target时用到的定义。

target_compile_definitions(<target>
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

 

include_directories

## 添加文件包含目录
## 目录添加到当前CMakeLists文件的INCLUDE_DIRECTORIES属性中,
## 也添加到当前CMakeLists文件所有target的INCLUDE_DIRECTORIES属性中
## AFTER|BEFORE 指定包含目录附加到前部还是尾部
## SYSTEM 指示包含目录是否是系统包含目录
include_directories([AFTER
|BEFORE] [SYSTEM] dir1 [dir2 ...])

target_include_directories

## 添加包含目录到一个target
## BEFORE 目录附加到前部
## 
target_include_directories(<target> [SYSTEM] [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

 

 

add_custom_target

## 添加一个执行指定命令的target.
## ALL 指明这个target会被放入缺省构建目标,然后它每次都会被运行
## COMMAND 设定在构建时会运行的命令 add_custom_target(Name [ALL] [command1 [args1...]] [COMMAND command2 [args2...] ...] [DEPENDS depend depend depend ... ] [BYPRODUCTS [files...]] [WORKING_DIRECTORY
dir] [COMMENT comment] [VERBATIM] [USES_TERMINAL] [COMMAND_EXPAND_LISTS] [SOURCES src1 [src2...]])

add_custom_command

aux_source_directory

## 查找目录下源文件
## dir 要查找的目录
## variable 结果存入变量,各文件名以";"分隔。
aux_source_directory(<dir> <variable>)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM