cmakelist.txt之命令行(二)
工程命令
这些命令只适用于CMake工程
add_compile_options
为源文件编译添加编译选项
add_compile_options(<option> ...)
add_custom_command
添加定制的构建规则
add_custom_command(OUTPUT output1 [output2 ...]
COMMAND command1 [ARGS] [args1...]
[COMMAND command2 [ARGS] [args2...] ...]
[MAIN_DEPENDENCY depend]
[DEPENDS [depends...]]
[BYPRODUCTS [files...]]
[IMPLICIT_DEPENDS <lang1> depend1
[<lang2> depend2] ...]
[WORKING_DIRECTORY dir]
[COMMENT comment]
[DEPFILE depfile]
[VERBATIM] [APPEND] [USES_TERMINAL]
[COMMAND_EXPAND_LISTS])
add_custom_command(TARGET <target>
PRE_BUILD | PRE_LINK | POST_BUILD
COMMAND command1 [ARGS] [args1...]
[COMMAND command2 [ARGS] [args2...] ...]
[BYPRODUCTS [files...]]
[WORKING_DIRECTORY dir]
[COMMENT comment]
[VERBATIM] [USES_TERMINAL])
add_custom_target
添加定制的目标
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_definitions
为源文件的编译添加定义项
add_definitions(-DFOO -DBAR ...)
add_dependencies
为两个层次之间的目标之间添加依赖关系
add_dependencies(<target> [<target-dependency>]...)
add_executable
为工程添加可执行文件
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
add_executable(<name> IMPORTED [GLOBAL])
add_executable(<name> ALIAS <target>)
add_library
添加库文件
add_library(<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED
[GLOBAL])
add_library(<name> OBJECT <src>...)
add_library(<name> ALIAS <target>)
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
add_subdirectory
添加次级目录
add_subdirectory(source_dir [binary_dir]
[EXCLUDE_FROM_ALL])
add_test
添加由ctest运行的test
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
[WORKING_DIRECTORY <dir>])
add_test(<name> <command> [<arg>...])
aux_source_directory
在目录下寻找所有的源文件
aux_source_directory(<dir> <variable>)
build_command
获取一个命令行来编译当前工程。大多为了ctest模块的内部使用。
build_command(<variable>
[CONFIGURATION <config>]
[TARGET <target>]
[PROJECT_NAME <projname>] # legacy, causes warning
)
create_test_sourcelist
为编译test程序创建一个test驱动和源文件列表
create_test_sourcelist(sourceListName driverName
test1 test2 test3
EXTRA_INCLUDE include.h
FUNCTION function)
define_property
定义属性
define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |
TEST | VARIABLE | CACHED_VARIABLE>
PROPERTY <name> [INHERITED]
BRIEF_DOCS <brief-doc> [docs...]
FULL_DOCS <full-doc> [docs...])
enable_language
启用某种编程语言(C++/C/FORTAN)
enable_language(<lang> [OPTIONAL] )
enable_testing
在当前目录下启用testing
enable_testing()
export
为了外部应用而导出文件
export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>])
export(TARGETS [target1 [target2 [...]]] [NAMESPACE <namespace>]
[APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES])
fltk_wrap_ui
创建FLTK用户接口封装器
fltk_wrap_ui(resultingLibraryName source1
source2 ... sourceN )
get_source_file_property
获取源文件的属性
get_source_file_property(VAR file property)
get_target_property
获取目标文件的属性
get_target_property(VAR target property)
get_test_property
获取test的属性
get_test_property(test property VAR)
include_directories
包含目录
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
include_external_msproject
包含外部的微软项目的文件
include_external_msproject(projectname location
[TYPE projectTypeGUID]
[GUID projectGUID]
[PLATFORM platformName]
dep1 dep2 ...)
include_regular_expression
包含正则表达式以便检测依赖项
include_regular_expression(regex_match [regex_complain])
install
包括安装目标文件,安装文件,安装目录,安装导出等。
link_directories
链接目录
link_directories(directory1 directory2 ...)
link_libraries
链接库
link_libraries([item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
load_cache
从其他CMake工程加载值
load_cache(pathToCacheFile READ_WITH_PREFIX
prefix entry1...)
load_cache(pathToCacheFile [EXCLUDE entry1...]
[INCLUDE_INTERNALS entry1...])
project
为整个工程设置名称、版本和语言等。
project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])
project(<PROJECT-NAME>
[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
[DESCRIPTION <project-description-string>]
[LANGUAGES <language-name>...])
qt_wrap_cpp
穿件QT封装
qt_wrap_cpp(resultingLibraryName DestName
SourceLists ...)
qt_wrap_ui
创建QT封装接口
qt_wrap_ui(resultingLibraryName HeadersDestName
SourcesDestName SourceLists ...)
remove_definitions
移除定义
remove_definitions(-DFOO -DBAR ...)
set_source_files_properties
设置源文件属性
set_source_files_properties([file1 [file2 [...]]]
PROPERTIES prop1 value1
[prop2 value2 [...]])
set_target_properties
设置目标文件属性
set_target_properties(target1 target2 ...
PROPERTIES prop1 value1
prop2 value2 ...)
set_tests_properties
设置test属性
set_tests_properties(test1 [test2...] PROPERTIES prop1 value1 prop2 value2)
source_group
在IDE工程生成中为源文件定义group。
source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
target_compile_definitions
为编译目标添加定义
target_compile_definitions(<target>
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
target_compile_features
为编译器添加额外的特征
target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
target_compile_options
添加编译选项
target_compile_options(<target> [BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
target_include_directories
为目标添加包含目录
target_include_directories(<target> [SYSTEM] [BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
target_link_libraries
为目标添加链接
target_sources
为目标添加源
target_sources(<target>
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
try_compile
尝试编译整个工程或者源文件
try_compile(RESULT_VAR <bindir> <srcdir>
<projectName> [<targetName>] [CMAKE_FLAGS <flags>...]
[OUTPUT_VARIABLE <var>])
`try_compile(RESULT_VAR <bindir> <srcfile|SOURCES srcfile...>
[CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_LIBRARIES <libs>...]
[OUTPUT_VARIABLE <var>]
[COPY_FILE <fileName> [COPY_FILE_ERROR <var>]]
[<LANG>_STANDARD <std>]
[<LANG>_STANDARD_REQUIRED <bool>]
[<LANG>_EXTENSIONS <bool>]
)
try_run
尝试编译并运行整个源文件
try_run(RUN_RESULT_VAR COMPILE_RESULT_VAR
bindir srcfile [CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_LIBRARIES <libs>...]
[COMPILE_OUTPUT_VARIABLE <var>]
[RUN_OUTPUT_VARIABLE <var>]
[OUTPUT_VARIABLE <var>]
[ARGS <args>...])