cmake_minimum_required (<CMake_lower_version>) #最低版本号
#cmake_minimum_required(VERSION 2.8)
project (<project_name>) #项目信息
#project(Demo1)
add_executable (<exe_name> <source_file_set>) #生成目标 Demo main.c more.c
#add_executable (Demo main.cpp)
aux_source_directory (<dir> <variable>) #添加<dir>下所有的源文件添加到<variable>
#eg:
#*************************************
#aux_source_directory(./ DIR_SRCS)
#add_executable(Demo ${DIR_SRCS}) #语法跟shell和bat完全一致 ${DIR_SRCS} 表示变量解引用
#*************************************
add_subdirectory(<sub_name>)#添加子工程
#add_subdirectory(math)
target_link_libraries(<executable_name> <lib_file_set>) #添加链接库
#target_link_libraries(Demo MathFuction) #libMathhFunction.dll.a or libMathhFunction.lib
add_library (<lib_name> <source_file_set>) #生成目标库
set(<variable> <ON|Defualt>)#设置变量使能
configure_file(<Header_file_set>) #设置配置头文件用于CMake对源码的设置
#eg:
#*************************************
#configure_file(
# "${PROJECT_SOURCE_DIR}/config.h.in" #默认模块配置文件 #cmakedefine USERDEF
# "${PROJECT_BINARY_DIR}/config.h" #自动生成#define USERDEF
#)
#*************************************
option(USERDEF "tiptool message" <OFF|ON>) #cmake-gui ccmake GUN option USERDEF定义的cmake使能变量通常和 if(USERDEF) endif配套使用
#eg:
#**************************************
#option(ONE_MODEL "this my one model" ON) #默认开启
#if(ONE_MODEL) #条件语句
# include_directories ("${PROJECT_SOURCE_DIR}/onemodel")#导入头文件路径
# add_subdirectory(onemodel) #子项目
# set(LINK_LIBS ${LINK_LIBS} onemodel) #类似linux 下 export PATH=$PATH:/USER_DIR 这种环境变量设置
#endif(ONE_MODEL)
include_directories(<dir>) #头文件路径
add_subdirectory(<sub_name>) #子工程路径
set(<variable_set> <${variable_set}> variable) #单个元素添加元素集合,多用于变量设置
install(TARGET <target_file> DESTINATION <install_dir>) #目标文件安装设置
install(FILES <source_file> DESTINATION <install_dir>) #源文件安装设置
#官文查阅
#这定义了生成指定OUTPUT文件的命令。
#在同一目录(CMakeLists.txt文件)中创建的目标(指定自定义命令的任何输出作为源文件)
#被赋予规则以在构建时使用命令生成文件。
#不要将输出列在可能并行构建的多个独立目标中,或者规则的两个实例可能会发生冲突(而是使用add_custom_target()命令驱动命令并使其他目标依赖于那个)。
#在makefile术语中,这将以下列形式创建一个新目标:
#定义自定义生成规则
add_custom_command(OUTPUT output1 [output2 ...] #指定输出生成的文件
COMMAND command1 [ARGS] [args1...] #指定在构建时执行的命令行 可以忽略command args
[COMMAND command2 [ARGS] [args2...] ...]
[MAIN_DEPENDENCY depend] #为命令指定主输入源文件
[DEPENDS [depends...]] #指定命令所依赖的文件
[BYPRODUCTS [files...]] #指定命令应该生成的文件
[IMPLICIT_DEPENDS <lang1> depend1 #请求扫描输入文件的隐式依赖项 C or C++
[<lang2> depend2] ...]
[WORKING_DIRECTORY dir] #执行时工作目录
[COMMENT comment] #在构建时执行命令之前显示提示信息
[DEPFILE depfile] #Specify a .d depfile for the Ninja generator
[VERBATIM] #对于构建工具,将正确转义命令的所有参数
[APPEND] #将COMMAND和DEPENDS选项值附加到指定的第一个输出的自定义命令
[USES_TERMINAL] #该命令将直接访问终端
[COMMAND_EXPAND_LISTS]) #COMMAND将扩展参数列表
add_custom_target #暂未找到释义
add_definitions
add_dependencies
add_executable #生成执行文件
add_library #生成链接库
#add_library(archive SHARED archive.cpp zip.cpp lzma.cpp) 生成动态库
#add_library(archive STATIC archive.cpp zip.cpp lzma.cpp) 生成静态库
#add_library(archive MODULE 7z.cpp)
#生成插件 将不能运用到target_link_libraries()命令中
#如果库不导出任何非托管符号(例如Windows资源DLL,C ++ / CLI DLL),则要求库不是 SHARED库,因为CMake要求SHARED库导出至少一个符号。
#***********************************************************
#add_library(MyFramework SHARED MyFramework.cpp)
#set_target_properties(MyFramework PROPERTIES
# FRAMEWORK TRUE
# FRAMEWORK_VERSION A
# MACOSX_FRAMEWORK_IDENTIFIER org.cmake.MyFramework
#)
#***********************************************************
#上述代码可以达成Macos 和IOS 平台插件库 是否支持QtPulgin暂不得知
#************************************************************
#add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
#add_library(archiveExtras STATIC $<TARGET_OBJECTS:archive> extras.cpp)
#add_executable(test_exe $<TARGET_OBJECTS:archive> test.cpp)
#************************************************************
#对象库 .obj 生成
#************************************************************
#add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)
#add_library(archiveExtras STATIC extras.cpp)
#target_link_libraries(archiveExtras PUBLIC archive)
#add_executable(test_exe test.cpp)
#target_link_libraries(test_exe archive)
#************************************************************
#对象库的链接成执行文件使用
add_subdirectory #添加子文件
add_test #添加测试
build_command
build_name
cmake_minimum_required
configure_file
create_test_sourcelist
enable_language
enable_testing
exec_program
execute_process
export_library_dependencies
find_file
find_library
find_package
find_path
find_path
find_program
fltk_wrap_ui
get_cmake_property
get_directory_property
get_filename_component
get_source_file_property
get_test_property
include_directories
include_external_msproject
include_regular_expression
install
install_files
install_programs
install_targets
link_directories
link_libraries
load_cache
load_command
make_directory
mark_as_advanced
math
message
output_required_files
project
qt_wrap_cpp
qt_wrap_ui
remove
remove_definitions
separate_arguments
set
set_directory_properties
set_source_files_properties
set_target_properties
set_tests_properties
site_name
source_group
string
subdir_depends
subdirs
target_link_libraries
try_compile
try_run
use_mangled_mesa
utility_source
variable_requires
vtk_make_instantiator
vtk_wrap_java
vtk_wrap_python
vtk_wrap_tcl
write_file