wordpress网站不安全一级域名网站里有二级域名

张小明 2026/1/14 0:28:59
wordpress网站不安全,一级域名网站里有二级域名,wordpress 交易模板,好看的网页源码CMake 中 add_executable 与 target_sources 详解 #x1f4d6; 前言 在 CMake 构建系统中#xff0c;add_executable 和 target_sources 是两个用于管理源文件的重要命令。理解它们的关系、区别和使用场景#xff0c;对于编写高质量的 CMake 配置文件至关重要。本文将深入探…CMake 中 add_executable 与 target_sources 详解 前言在 CMake 构建系统中add_executable和target_sources是两个用于管理源文件的重要命令。理解它们的关系、区别和使用场景对于编写高质量的 CMake 配置文件至关重要。本文将深入探讨这两个命令的用法、关系和最佳实践。1️⃣ add_executable创建可执行文件目标基本语法add_executable(目标名 [源文件1] [源文件2] ...)功能说明add_executable用于创建一个可执行文件目标这是构建可执行程序的第一步。它可以✅创建目标在 CMake 中注册一个可执行文件目标✅指定源文件可以同时指定一个或多个源文件✅生成构建规则告诉构建系统如何编译和链接这些源文件基本示例# 方式1创建目标并指定所有源文件 add_executable(myapp main.cpp utils.cpp helper.cpp ) # 方式2只创建目标稍后添加源文件 add_executable(myapp main.cpp)关键特点必须首先调用在添加源文件之前必须先创建目标每个可执行文件调用一次一个add_executable对应一个可执行文件源文件可选可以在创建时指定源文件也可以稍后用target_sources添加2️⃣ target_sources向目标添加源文件基本语法target_sources(目标名 PRIVATE|PUBLIC|INTERFACE [源文件...])功能说明target_sources用于向已存在的目标添加源文件。它可以✅添加源文件向已创建的目标添加更多源文件✅控制可见性通过PRIVATE、PUBLIC、INTERFACE控制源文件的可见性✅支持条件添加可以根据条件动态添加不同的源文件基本示例# 先创建目标 add_executable(myapp main.cpp) # 然后添加更多源文件 target_sources(myapp PRIVATE utils.cpp helper.cpp utils.h # 可选用于IDE显示和依赖跟踪 )关键特点目标必须已存在必须先调用add_executable或add_library创建目标可以多次调用可以向同一个目标多次添加源文件支持可见性控制通过关键字控制源文件的传递性3️⃣ 两者的关系和区别核心关系add_executable (创建目标) → target_sources (添加源文件) ↓ ↓ 必须首先调用 目标必须已存在对比表格特性add_executabletarget_sources功能创建可执行文件目标向目标添加源文件调用时机必须先调用必须在目标创建后调用能否创建目标✅ 能❌ 不能能否添加源文件✅ 能✅ 能调用次数每个可执行文件一次可以多次调用可见性控制❌ 不支持✅ 支持PRIVATE/PUBLIC/INTERFACE使用方式对比方式1只用add_executable适合简单项目# 一次性创建目标并指定所有源文件 add_executable(multifile main.cpp math_utils.cpp )优点简单直接所有源文件一目了然适合源文件较少的项目缺点不支持条件添加源文件不支持可见性控制方式2add_executabletarget_sources适合复杂项目# 先创建目标 add_executable(multifile main.cpp) # 然后添加更多源文件 target_sources(multifile PRIVATE math_utils.cpp math_utils.h )优点支持条件添加源文件支持可见性控制更灵活适合大型项目缺点代码稍显复杂源文件分散在多处4️⃣ 可见性关键字详解target_sources支持三个可见性关键字用于控制源文件的传递性PRIVATE私有含义源文件只用于构建当前目标不会传递给依赖它的其他目标。使用场景实现文件.cpp仅内部使用的头文件可执行文件的所有源文件因为可执行文件通常不被其他目标依赖示例add_executable(myapp main.cpp) target_sources(myapp PRIVATE math_utils.cpp # 实现文件 math_utils.h # 头文件仅内部使用 )PUBLIC公共含义源文件用于构建当前目标并且会传递给依赖它的其他目标。使用场景库的公共头文件需要被使用该库的目标访问的头文件示例add_library(mylib STATIC math_lib.cpp) # PRIVATE实现文件不对外暴露 target_sources(mylib PRIVATE math_lib.cpp # 实现文件 ) # PUBLIC公共头文件使用者需要它 target_sources(mylib PUBLIC math_lib.h # 公共头文件会传递给使用者 )INTERFACE接口含义源文件不用于构建当前目标但会传递给依赖它的其他目标。使用场景接口库INTERFACE library的头文件仅提供头文件的库header-only library示例# 创建接口库只有头文件没有实现 add_library(header_only_lib INTERFACE) target_sources(header_only_lib INTERFACE header_only.h # 头文件不编译但使用者可以访问 )可见性对比表关键字用于构建当前目标传递给依赖者典型用途PRIVATE✅ 是❌ 否实现文件、内部头文件PUBLIC✅ 是✅ 是库的公共头文件INTERFACE❌ 否✅ 是接口库的头文件传递性演示假设有库A→可执行文件B# 库A add_library(A STATIC) target_sources(A PRIVATE file1.cpp # B 看不到 ) target_sources(A PUBLIC file2.h # B 可以看到 ) target_sources(A INTERFACE file3.h # B 可以看到但A不编译它 ) # 可执行文件B add_executable(B main.cpp) target_link_libraries(B A)结果✅ B 可以访问file2.hPUBLIC✅ B 可以访问file3.hINTERFACE❌ B 不能访问file1.cppPRIVATE5️⃣ 实际应用场景场景1简单项目推荐用add_executablecmake_minimum_required(VERSION 3.10) project(SimpleApp LANGUAGES CXX) # 所有源文件已知一次性指定 add_executable(myapp main.cpp utils.cpp helper.cpp )适用情况源文件数量少 10个源文件固定不需要条件添加项目结构简单场景2条件编译推荐用target_sourcescmake_minimum_required(VERSION 3.10) project(ConditionalApp LANGUAGES CXX) # 先创建目标 add_executable(myapp main.cpp) # 根据平台添加不同的源文件 if(WIN32) target_sources(myapp PRIVATE windows_utils.cpp win_specific.cpp ) else() target_sources(myapp PRIVATE unix_utils.cpp unix_specific.cpp ) endif()适用情况需要根据平台、配置等条件添加不同的源文件源文件较多需要分类管理场景3库项目混合使用cmake_minimum_required(VERSION 3.10) project(MyLibrary LANGUAGES CXX) # 创建静态库 add_library(mylib STATIC) # PRIVATE实现文件不对外暴露 target_sources(mylib PRIVATE math_lib.cpp # 实现文件 internal_helper.cpp # 内部辅助函数 internal_helper.h # 内部头文件 ) # PUBLIC公共头文件使用者需要它 target_sources(mylib PUBLIC math_lib.h # 公共头文件会传递给使用者 ) # 创建可执行文件并链接库 add_executable(myapp main.cpp) target_link_libraries(myapp mylib)适用情况创建库供其他目标使用需要区分公共接口和内部实现场景4包含头文件IDE支持cmake_minimum_required(VERSION 3.10) project(IDEExample LANGUAGES CXX) # 创建目标 add_executable(myapp main.cpp) # 添加源文件 target_sources(myapp PRIVATE math_utils.cpp math_utils.h # 添加头文件用于IDE显示和依赖跟踪 )适用情况希望IDE如 Visual Studio、CLion在项目树中显示头文件需要更精确的依赖跟踪6️⃣ 完整示例多文件项目让我们看一个完整的示例演示两种方式的使用项目结构02-多文件示例/ ├── CMakeLists.txt ├── main.cpp ├── math_utils.h └── math_utils.cpp方式1使用add_executable当前方式cmake_minimum_required(VERSION 3.10) project(MultiFile LANGUAGES CXX) # 添加所有源文件 add_executable(multifile main.cpp math_utils.cpp )方式2使用add_executabletarget_sourcescmake_minimum_required(VERSION 3.10) project(MultiFile LANGUAGES CXX) # 先创建目标 add_executable(multifile main.cpp) # 然后添加更多源文件 target_sources(multifile PRIVATE math_utils.cpp # 实现文件 math_utils.h # 头文件可选用于IDE显示 )两种方式效果相同选择哪种取决于项目需求和个人偏好。7️⃣ 最佳实践1. 何时使用add_executable✅推荐使用简单项目源文件数量少 10个源文件固定不需要条件添加希望所有源文件集中在一处便于查看2. 何时使用target_sources✅推荐使用需要根据条件添加不同的源文件源文件较多需要分类管理创建库需要区分公共接口和内部实现希望IDE显示头文件3. 可见性关键字选择可执行文件几乎总是使用PRIVATE库的实现文件使用PRIVATE库的公共头文件使用PUBLIC接口库的头文件使用INTERFACE4. 头文件的处理技术角度头文件.h不需要在 CMake 中显式列出编译器会自动通过#include处理头文件实践角度可以列出头文件用于IDE显示和依赖跟踪对于库公共头文件应该用PUBLIC列出5. 代码组织建议# 推荐清晰的注释和分组 cmake_minimum_required(VERSION 3.10) project(MyProject LANGUAGES CXX) # 创建可执行文件 add_executable(myapp main.cpp) # 添加源文件 target_sources(myapp PRIVATE utils.cpp helper.cpp utils.h helper.h )8️⃣ 常见问题Q1: 头文件需要添加到 CMakeLists.txt 吗A: 技术上不需要编译器会自动处理#include。但可以添加用于IDE 项目树显示依赖跟踪头文件改变时触发重新编译Q2: 可执行文件可以用 PUBLIC 或 INTERFACE 吗A: 技术上可以但通常没有必要。因为可执行文件不会被其他目标依赖所以PRIVATE就足够了。Q3:add_executable和target_sources可以混用吗A: 可以可以先在add_executable中指定一些源文件然后用target_sources添加更多。add_executable(myapp main.cpp utils.cpp) target_sources(myapp PRIVATE helper.cpp)Q4: 什么时候必须用target_sourcesA: 以下情况必须使用需要条件添加源文件需要控制源文件的可见性PRIVATE/PUBLIC/INTERFACE在子目录的 CMakeLists.txt 中向父目录的目标添加源文件9️⃣ 总结核心要点add_executable创建可执行文件目标可以同时指定源文件target_sources向已存在的目标添加源文件支持可见性控制关系add_executable创建目标target_sources添加源文件可见性PRIVATE私有、PUBLIC公共、INTERFACE接口选择建议简单项目使用add_executable一次性指定所有源文件复杂项目使用add_executabletarget_sources更灵活库项目使用target_sources区分公共接口和内部实现记忆口诀add_executable 创建目标target_sources 添加文件PRIVATE 私有自己用PUBLIC 公共大家用INTERFACE 接口给别人用
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做seo网站的公司seo优化的主要内容

Linux下PyTorch安装教程GPU加速版,配合Miniconda更流畅 在深度学习项目日益复杂的今天,一个稳定、高效且可复现的开发环境几乎是每个AI工程师的刚需。你是否曾因为升级某个包导致另一个项目跑不起来?是否经历过训练脚本卡在CPU上几天都跑不完…

张小明 2026/1/10 11:46:19 网站建设

杭州网站设计公司推荐那家建设网站p2p公司最好?

AI识别快速通道:预配置镜像实战手册 作为一名产品设计师,你是否经常需要为设计素材生成自动标签,但又不想每次都依赖工程团队?现在,借助预配置的AI识别快速通道镜像,你可以轻松实现自主可控的标签生成功能。…

张小明 2026/1/10 11:46:20 网站建设

网站建设用到的技术门户网站建设整改措施

Azure 表服务与 ADO.NET 数据服务详解 1. Azure 表服务特性 在论坛、书籍和博客中,常能看到一些“专家”建议对数据进行非规范化处理以提升性能,但鲜有人解释其原理。实际上,不同表的数据通常存储在磁盘的不同文件中,甚至不同机器上。规范化操作涉及数据库连接,需要将多…

张小明 2026/1/10 11:46:20 网站建设

网站flash导入页赣州的免费网站建设

Linly-Talker:暗光环境下的稳定数字人渲染技术解析 在夜间直播间里,灯光昏暗、背景模糊,传统虚拟主播系统往往因面部特征提取失败而出现“嘴不动”“眼神空洞”的尴尬场面。而在远程办公会议中,用户背光或低照度拍摄的照片也常导致…

张小明 2026/1/10 11:46:21 网站建设

河源建设局网站深圳的大公司

边缘计算场景适配:轻量化部署DDColor满足低延迟需求 在博物馆的数字化展厅里,一位老人将泛黄的老照片轻轻放在扫描仪上——不到十秒,屏幕上便浮现出生动的彩色影像:他年轻时穿着军装站在天安门前,天空湛蓝,…

张小明 2026/1/10 11:46:23 网站建设

免费企业模板网站网站推广的全过程

地铁非法过闸检测方法。 📑 基于视觉分析的地铁非法过闸智能检测算法研究与应用 摘要:本论文深入研究了基于计算机视觉的地铁闸机逃票行为(如尾随、冲撞)检测算法。针对传统红外传感器方法在复杂场景下识别率低的问题&#xff0…

张小明 2026/1/10 11:46:24 网站建设