安卓开发简单网站开发代码下载简单的电商网站
news/
2025/9/24 6:26:24/
文章来源:
安卓开发简单网站开发代码下载,简单的电商网站,iphone私人网址,500万在北京几环买房#x1f608;「CSDN主页」#xff1a;传送门 #x1f608;「Bilibil首页」#xff1a;传送门 #x1f608;「本文的内容」#xff1a;CMake入门教程 #x1f608;「动动你的小手」#xff1a;点赞#x1f44d;收藏⭐️评论#x1f4dd; 文章目录 1.概述2.设置属性 - … 「CSDN主页」传送门 「Bilibil首页」传送门 「本文的内容」CMake入门教程 「动动你的小手」点赞收藏⭐️评论 文章目录 1.概述2.设置属性 - set_property2.1基本语法2.2示例 3.获取属性 - get_property3.1基本语法3.2示例 4.实例4.1 demo1设定编译参数4.2 demo2定义C标准4.3 demo3-设置编译器定义 5.实战使用技巧与注意事项 1.概述 在CMake中属性管理是构建系统的核心部分。通过使用set_property和get_property命令开发者可以为目标、测试、源文件、目录及全局设置和获取属性。这些属性控制着构建过程和逻辑。 #mermaid-svg-bXYCH1AbBpA3cGdI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .error-icon{fill:#552222;}#mermaid-svg-bXYCH1AbBpA3cGdI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bXYCH1AbBpA3cGdI .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bXYCH1AbBpA3cGdI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bXYCH1AbBpA3cGdI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bXYCH1AbBpA3cGdI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bXYCH1AbBpA3cGdI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bXYCH1AbBpA3cGdI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bXYCH1AbBpA3cGdI .marker.cross{stroke:#333333;}#mermaid-svg-bXYCH1AbBpA3cGdI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bXYCH1AbBpA3cGdI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .cluster-label text{fill:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .cluster-label span{color:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .label text,#mermaid-svg-bXYCH1AbBpA3cGdI span{fill:#333;color:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .node rect,#mermaid-svg-bXYCH1AbBpA3cGdI .node circle,#mermaid-svg-bXYCH1AbBpA3cGdI .node ellipse,#mermaid-svg-bXYCH1AbBpA3cGdI .node polygon,#mermaid-svg-bXYCH1AbBpA3cGdI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bXYCH1AbBpA3cGdI .node .label{text-align:center;}#mermaid-svg-bXYCH1AbBpA3cGdI .node.clickable{cursor:pointer;}#mermaid-svg-bXYCH1AbBpA3cGdI .arrowheadPath{fill:#333333;}#mermaid-svg-bXYCH1AbBpA3cGdI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bXYCH1AbBpA3cGdI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bXYCH1AbBpA3cGdI .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bXYCH1AbBpA3cGdI .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bXYCH1AbBpA3cGdI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bXYCH1AbBpA3cGdI .cluster text{fill:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI .cluster span{color:#333;}#mermaid-svg-bXYCH1AbBpA3cGdI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bXYCH1AbBpA3cGdI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} set_property get_property Apply Retrieve CMakeLists.txt Set Property Get Property Build Target Build Information 2.设置属性 - set_property set_property命令用于设置指定范围内的属性值。 2.1基本语法
set_property(SCOPE NAME PROPERTY VALUE1 [VALUE2 ...])SCOPE定义属性的作用域。这可以是 GLOBAL全局范围、DIRECTORY目录范围、TARGET目标范围、SOURCE源文件范围、TEST测试范围或 CACHE缓存条目范围。NAME指定属性所属的实体名称。例如目标的名称或源文件的路径。PROPERTY要设置的属性名称。VALUE1 [VALUE2 ...]要设置的属性值。
2.2示例
设置全局属性
set_property(GLOBAL PROPERTY GLOBAL_PROP Some Value)设置目标属性
add_executable(my_target main.cpp)
set_property(TARGET my_target PROPERTY CXX_STANDARD 17)设置目录属性
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY MY_DIR_PROP Directory Value)设置源文件属性
set_property(SOURCE src/main.cpp PROPERTY HEADER_FILE_ONLY TRUE)设置测试属性
add_test(NAME my_test COMMAND my_executable)
set_property(TEST my_test PROPERTY LABELS MyTestLabel)设置缓存属性
set_property(CACHE MY_CACHE_VAR PROPERTY TYPE STRING)3.获取属性 - get_property get_property 命令在 CMake 中用于获取已定义属性的值。这个命令可以用来查询各种类型的属性包括目标属性、测试属性、源文件属性等 3.1基本语法
get_property(variable SCOPE ITEM_NAME PROPERTY PROPERTY_NAME)variable一个变量用于存储获取到的属性值。SCOPE定义属性的作用域。这可以是 GLOBAL全局范围、DIRECTORY目录范围、TARGET目标范围、SOURCE源文件范围、TEST测试范围或 CACHE缓存条目范围。NAME指定属性所属的实体名称。例如目标的名称或源文件的路径。PROPERTY PROPERTY_NAME要获取的属性名称。[SET]可选参数如果指定只有当属性被显式设置时命令才会成功。
3.2示例
获取全局属性
get_property(my_global_value GLOBAL PROPERTY GLOBAL_PROP)获取目标属性
get_property(my_target_std TARGET my_target PROPERTY CXX_STANDARD)获取目录属性
get_property(my_dir_prop DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY MY_DIR_PROP)获取源文件属性
get_property(header_only SOURCE src/main.cpp PROPERTY HEADER_FILE_ONLY)获取测试属性
get_property(test_labels TEST my_test PROPERTY LABELS)获取缓存属性
get_property(cache_type CACHE MY_CACHE_VAR PROPERTY TYPE)4.实例
4.1 demo1设定编译参数 为一个可执行文件目标设置自定义的编译选项并获取这些选项 CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyExecutableProject)# 添加一个可执行文件
add_executable(MyExecutable main.cpp)# 为目标设置编译选项
set_property(TARGET MyExecutable PROPERTY COMPILE_OPTIONS -Wall -O3)# 获取刚刚设置的属性
get_property(compiler_options TARGET MyExecutable PROPERTY COMPILE_OPTIONS)
message(STATUS Compiler options for MyExecutable: ${compiler_options})4.2 demo2定义C标准 设置全局属性以定义整个项目的C标准并获取该属性。 CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(GlobalPropertyProject)# 设置全局属性
set_property(GLOBAL PROPERTY CMAKE_CXX_STANDARD 17)# 添加一个可执行文件
add_executable(MyExecutable main.cpp)# 获取全局属性
get_property(cxx_standard GLOBAL PROPERTY CMAKE_CXX_STANDARD)
message(STATUS Global C standard: ${cxx_standard})4.3 demo3-设置编译器定义 为当前目录设置编译器定义并获取这些定义 CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(DirectoryPropertyProject)# 添加一个可执行文件
add_executable(MyExecutable main.cpp)# 为当前目录设置编译器定义
set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS MY_CUSTOM_DEFINITION)# 获取目录属性
get_property(dir_compile_defs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY COMPILE_DEFINITIONS)
message(STATUS Compile definitions for current directory: ${dir_compile_defs})5.实战使用技巧与注意事项
合理组织属性为不同的构建目标和文件设置合适的属性以便更好地管理和维护项目。全局属性管理利用全局属性进行跨项目的配置共享。缓存属性使用CACHE选项来持久化跨多次构建的配置。属性检查在获取属性前先检查属性是否已被定义。属性名称大小写敏感确保在设置和获取属性时使用正确的大小写。避免名称冲突选择独特的属性名称以免与CMake内置属性或其他项目属性冲突。了解属性继承机制目录属性可以被其子目录继承。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915073.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!