CMake入门知识(1)

目录

1. project 命令

2. cmake_minimum_required 命令

3.aux_source_directory 命令

4.add_executable 命令

5.add_library 命令

6.add_subdirectory 命令

8.set 命令

9.unset 命令

10.message 命令

11.include命令

12. include_directories 命令

13. set_target_properties命令

14. execute_process命令

15.qt5_add_resources命令


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.aname.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 )

命令语法: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文件变成了一个静态数组。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值