CMake 语法

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


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值