网站ui设计怎么做手机之家
2026/4/17 3:22:45 网站建设 项目流程
网站ui设计怎么做,手机之家,装潢设计与制作是学什么,wordpress cosy文章目录第二章 CMake基础语法2.20 CMake内置属性解决头文件包含2.20.1 CMake内置属性2.20.2 测试文件2.20.3 解决方法2.20.4 探究为什么可生成exe ?2.21 CMAKE_CXX_STANDARD变量设置C标准2.22 include_directories()/target_include_directories()2.23 target_sources() 向目…文章目录第二章 CMake基础语法2.20 CMake内置属性解决头文件包含2.20.1 CMake内置属性2.20.2 测试文件2.20.3 解决方法2.20.4 探究为什么可生成exe ?2.21 CMAKE_CXX_STANDARD变量设置C标准2.22 include_directories()/target_include_directories()2.23 target_sources() 向目标添加源文件2.24 add_compile_definitions()/target_compile_definition()添加预定义本文介绍CMake内置属性解决头文件包含、CMake定义C/C标准、include_directories()和宏定义。第二章 CMake基础语法2.20 CMake内置属性解决头文件包含2.20.1 CMake内置属性CMake 中定义了很多范围(全局、目录、目标(例如可执行文件或库)源文件 测试 或者 缓存 等 )内置的属性(Property)用于控制CMake的行为和特性内置属性可直接使用而无需显式定义。2.20.2 测试文件头文件 和 源文件不在一个目录下面。#include iostream#include a.husing namespace std;voidfuncA(){coutFunction A calledendl;}intmain(){#ifdef AfuncA();#endifcoutAAAAAAendl;return0;}CMakeLists.txt文件如下cmake_minimum_required(VERSION3.30)# 项目project(sourceCmake VERSION1.2LANGUAGES CXX)if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE Debug CACHE STRING选择编译类型FORCE)endif()add_executable(A a.cpp)编译如下提示无法找到对应的头文件。2.20.3 解决方法在源文件中找不到头文件使用cmake内置属性来解决。cmake_minimum_required(VERSION3.30)# 项目project(sourceCmake VERSION1.2LANGUAGES CXX)if(NOT CMAKE_BUILD_TYPE)set(CMAKE_BUILD_TYPE Debug CACHE STRING选择编译类型FORCE)endif()add_executable(A a.cpp)# 定义目标属性set_target_properties(A PROPERTIES COMPILE_OPTIONS -Wall COMPILE_DEFINITIONSAINCLUDE_DIRECTORIES${CMAKE_CURRENT_SOURCE_DIR}/sub)#获取目标的属性get_target_property(var1 A COMPILE_OPTIONS)message(COMPILE_OPTIONS${var1})# COMPILE_OPTIONS-Wallget_target_property(var2 A COMPILE_DEFINITIONS)message( COMPILE_DEFINITIONS${var2})# COMPILE_DEFINITIONSAget_target_property(var3 A INCLUDE_DIRECTORIES)message( INCLUDE_DIRECTORIES${var3})# INCLUDE_DIRECTORIESE:/cmakeLearning/chap2/13property/sub上面找不到头文件问题即可解决。2.20.4 探究为什么可生成exe ?在目标属性中添加上 INCLUDE_DIRECTORY后为什么可以包含头文件呢使用下面的-v选项查看。PS E:\practice_Code\cmake\25cmake --build build -v-v 或 –verbose 启用详细输出方便查看执行过程。原理CMake将设置的目标属性加入到编译选项中。2.21 CMAKE_CXX_STANDARD变量设置C标准**CMAKE_C_STANDARD **指定C语高标准、值可以是90 99 11 17 23,当目标创建时作为TARGET属性C_STANDARD的默认值CMAKE_C_STANDARD_REQUIRED :设置为ON强制使用C标准设置为OFF则表示可选。如果指定标准不可用则可会“囊减”到以前的标准。当目标创建时作为TARGET属性C_STANDARD_REQUIRED的默认值CMAKE_CXX_STANDARD指定C语标准、值可以是98111417 23 26,当目标创建时作为TARGET属性CXX_STANDARD的默认值CMAKE_CXX_STANDARD_REQUIRED设置为ON强制使用C标准设置为OFF则表示可选如果指定标准不可用则可能会“衰减”到以前的标准。当目标创建时作为TARGET属性CXX STANDARD REQUIRED的默认值CMakeLists.txtcmake_minimum_required(VERSION3.30)project(main VERSION1.0LANGUAGES CXX)# 查看C标准message(CMAKE_CXX_STANDARD${CMAKE_CXX_STANDARD})# 变量CMAKE_C_STANDARD没设置之前是空置# 设置C 23 标准set(CMAKE_CXX_STANDARD23)message(CMAKE_CXX_STANDARD${CMAKE_CXX_STANDARD})# CMAKE_CXX_STANDARD23# 严格设置C标准set(CMAKE_CXX_STANDARD_REQUIRED ON)add_executable(main main.cpp)2.22 include_directories()/target_include_directories()include_directories() 作用告诉编译器去哪里找头文件相当于-I/path/to/dir。设置头文件后会传递到当前目录以及所有子目录下的所有cmake。include_directories([AFTER][BEFORE][SYSTEM]dir1[dir2])参数AFTER|BEFORE AFTER 是默认行为将路径添加到当前include列表的末尾或前边。 SYSTEM:告诉编译器这些目标在某些平台上是系统包含目录设置后编译器会忽略这些目录下的头文件产生的警告。dir 被添加的目录相对路径被解释为相对于当前源目录。include_directories()缺点它会影响当前目录所有的目标。例如 target A 需要库 Xtarget B 不需要X, 用include_directories()会导致B也加上X的路径。因此现代CMake不推荐使用这个方法设置目标的头文件而是使用target_include_directories设置目录头文件。target_include_directories用于给特定的库或可执行文件添加头文件搜索路径比 include_directories 更精细不会污染全局语法如下target_include_directories(target[SYSTEM][BEFORE]INTERFACE|PUBLIC|PRIVATE[items1...]...) 目标可执行文件或库。INTERFACE|PUBLIC|PRIVATE为了说明这三个关键字作用假如现在正在编译一个库MyLib它依赖头文件目录A;PRIVATE为MyLib设置私有属性后只给自己用链接MyLib的人不能用。INTERFACE: 只给使用这个三方库的人使用编译这个库时不能使用指定头文件目录。PUBLIC: 链接库的人和自己都能使用这个头文件。测试代码目录如下最外层cmake如下cmake_minimum_required(VERSION3.30)project(main VERSION1.0LANGUAGES CXX)set(CMAKE_CXX_STANDARD23)set(CMAKE_CXX_STANDARD_REQUIRED ON)# 调用子目录add_subdirectory(lib)add_executable(main app/main.cpp)target_link_libraries(main PRIVATE mathlib)库的cmake如下cmake_minimum_required(VERSION3.30)project(mathlib VERSION1.0LANGUAGES CXX)set(SOURCEFILE${CMAKE_CURRENT_SOURCE_DIR}/source/my_math.cpp)message(SOURCEFILE${SOURCEFILE})add_library(mathlib STATIC${SOURCEFILE})# 设置公开谁调用这个库都会包含这个目录target_include_directories(mathlib PUBLIC${CMAKE_CURRENT_SOURCE_DIR}/include)2.23 target_sources() 向目标添加源文件向目标添加源文件使用target_sources(). 语法格式target_sources(targetINTERFACE|PUBLIC|PRIVATE[items1]INTERFACE|PUBLIC|PRIVATE[items2])参数由add_executable() 和 add_library() 或 add_custom_target() 等命令创建的目标并且不能是目标别名。INTERFACE | PUBLIC | PRIVATE PUBLIC既给自己用又给别人用PRIVATE只给自己用INTERFACE 只给别人用。cmake_minimum_required(VERSION3.29)project(test29)add_executable(main)# 向目标加入源文件target_sources(main PUBLIC main.c PRIVATE a.c PRIVATE b.c)#获取目标属性get_target_property(var main SOURCES)message(目标 SOURCES${var})# 目标 SOURCES main.c;a.c;b.cget_target_property(var main INTERFACE_SOURCES)message(目标 INTERFACE_SOURCES${var})# 目标 INTERFACE_SOURCES E:/practice_Code/cmake/29/main.c2.24 add_compile_definitions()/target_compile_definition()添加预定义add_compile_definitions() 为当前目录以及子目录下的所有target添加宏定义相当于在编译时添加 -D MY_MRO1语法add_compile_definitions(definition...)例如# 定义一个带值的宏相当于 #define MAX_BUFFER_SIZE 1024add_compile_definitions(MAX_BUFFER_SIZE1024)add_compile_definitions 影响当前目录下的所有目标假如指向给库mathlib添加一个宏不想给其他target添加宏推荐使用target_compile_definitions。target_compile_definitions语法如下target_compile_definitions(mathlib PRIVATEMY_LIB_INTERNAL1# 只有编译 mathlib 内部代码时可见PUBLICMY_LIB_API1# 编译 mathlib 和 链接 mathlib 的人都可见INTERFACEMY_LIB_USER1# 只有链接 mathlib 的人可见)测试给main添加一个宏intmain(){#ifdef VERSION_STRMyMath math;coutmath.add(3,4)endl;#endifcouthello worldendl;return0;}cmake文件如下cmake_minimum_required(VERSION3.30)project(main VERSION1.0LANGUAGES CXX)set(CMAKE_CXX_STANDARD23)set(CMAKE_CXX_STANDARD_REQUIRED ON)# 调用子目录add_subdirectory(lib)add_executable(main app/main.cpp)target_link_libraries(main PRIVATE mathlib)# 给main添加一个宏target_compile_definitions(main PRIVATEVERSION_STR1)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询