目录
1. project 命令
命令语法:project(<projectname> [languageName1 languageName2 ... ] )
命令简述:用于指定项目的名称
project(Main)
project (Test1)
project(Test1 VERSION 0.1 LANGUAGES CXX)
主CMakeLists.txt 必须有一个 project 语句。
2. cmake_minimum_required 命令
命令语法:cmake_minimum_required(VERSION major[.minor[.patch[.tweak]]]
命令简述:用于指定需要的 CMake 的最低版本
cmake_minimum_required (VERSION 2.8.8) #added by cjh
主CMakeLists.txt 必须有一个 cmake_minimum_required 语句。
3.aux_source_directory 命令
命令语法:aux_source_directory(<dir> <variable>)
命令简述:用于将 dir 目录下的所有源文件的名字保存在变量 variable 中
aux_source_directory(. DIR_SRCS)
aux_source_directory(../include DIR_SRCS)
4.add_executable 命令
命令语法:add_executable(<name> source1 source2 … sourceN)
命令简述:用于指定从一组源文件 source1 source2 … sourceN 编译出一个可执行文件且命名为 name
add_executable( Test1 ${PROJECT_SOURCES} )
add_executable( SimpleSafeButtonTest
${SSBT_SRC}
)
整个CMake工程必须有这个生成可执行程序的命令
5.add_library 命令
命令语法:add_library( <name> [STATIC | SHARED | MODULE] source1 source2 … sourceN)
命令简述:用于指定从一组源文件 source1 source2 … sourceN 编译出一个(动态|静态|模块)库文件且命名为 name
add_library( hello_library STATIC src/Hello.cpp )
注意:添加名为name
的库,库的源文件可指定,也可用target_sources()
后续指定。
生成的library名会根据 STATIC |
SHARED 成为name.a
或name.lib。
这里的 STATIC 和 SHARED 可不设置,通过全局的 BUILD_SHARED_LIBS的 FALSE 或 TRUE来指定。
6.add_subdirectory 命令
命令语法:add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
命令简述:用于添加一个需要进行构建的子目录
add_subdirectory(Lib)
add_subdirectory ( src/libs/hw )
7.target_link_libraries 命令
命令语法:target_link_libraries(<target> [item1 [item2 [...]]] [[debug|optimized|general] ] …)
命令简述:用于指定 target 需要链接 item1 item2 …。这里 target 必须已经被创建,链接的 item 可以是已经存在的 target(依赖关系会自动添加)
target_link_libraries(Main Lib)
target_link_libraries(SimpleSafeButtonTest ${LD_ADD} Qt5::Core Qt5::Gui Qt5::Widgets )
8.set 命令
命令语法:set( <variable> <value> )
命令简述:用于设定变量 variable 的值为 value。如果指定了 CACHE 变量将被放入 Cache(缓存)中。
set(CMAKE_MODULE_PATH ON)
set( SSBT_SRC
main.cpp
SimpleSafeButtonTest.cpp
SimpleSafeButtonTest.ui
${IMG_QRC}
)
9.unset 命令
命令语法:unset(<variable> [CACHE])
命令简述:用于移除变量 variable。如果指定了 CACHE 变量将被从 Cache 中移除。
10.message 命令
命令语法: message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] “message to display” …)
命令简述:用于输出信息
message(“Hello World”)
11.include命令
命令语法: INCLUDE( file1 [OPTIONAL] )
INCLUDE(module [OPTIONAL])
命令简述:用来载入 CMakeLists.txt 文件,也用于载入预定义的 cmake 模块。你可以指定载入一个文件,如果定义的是一个模块,那么将在 CMAKE_MODULE_PATH 中搜索这个模块并载入。
include ( src/version.cmake )
12. include_directories 命令
命令语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 …)
命令简述:用于设定目录,这些设定的目录将被编译器用来查找 include 文件
# include paths
include_directories( BEFORE
src
src/libs/include
src/app/app-common
src/common
)
AFTER|BEFORE 选项:这些新加的目录是加在 已有目录的前面还是后面。
13. set_target_properties命令
命令语法:set_target_properties(target1 target2 ... PROPERTIES prop1 value1 prop2 value2 ...)
命令简述:设置 targetx 的各类属性 propx
set_target_properties ( test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${MYPROJEXE_OUTPUT_PATH} )
14. execute_process命令
命令语法:execute_process( COMMAND <cmd1> [args1...]] )
命令简述:用于执行一个或者多个外部命令。每一个命令的标准输出通过管道转为下一个命令的标准输入。
execute_process ( COMMAND pwd )
execute_process ( COMMAND ls COMMAND sort )
15.qt5_add_resources命令
命令语法:qt5_add_resources( <VAR> file1.qrc [file2.qrc ...] [OPTIONS ...] )
命令简述:使用 Resource Compiler(rcc)从Qt资源文件(.qrc)创建源代码。生成的源文件的路径添加到中<VAR>。
qt5_add_resources(IMG_QRC buttonimg.qrc)
buttonimg.qrc 其实就被被转换成 qrc_buttonimg.cpp 文件,bmp文件变成了一个静态数组。