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

张小明 2026/1/15 13:13:08
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进行投诉反馈,一经查实,立即删除!

关停网站的申请做设计适合关注的网站

撰写工程技术报告,核心在于将复杂的设计思想、严谨的流程与精确的参数,转化为任何同行都能清晰理解、甚至可复现的专业文档。好写作AI深度适配工程师思维,致力于成为您的“智能技术文档助手”,在设计流程叙述与技术参数说明两大关…

张小明 2026/1/12 13:51:37 网站建设

华汇建设集团有限公司网站1688首页

还在为制作PPT而烦恼吗?PPTist这款基于Vue3.x TypeScript开发的免费在线演示文稿应用,让你在浏览器中就能完成从简单编辑到复杂设计的全过程。无需安装任何软件,即刻开启你的PPT创作之旅!🎯 【免费下载链接】PPTist 基…

张小明 2026/1/13 2:03:18 网站建设

做羊水亲子鉴定网站苏州吴江城乡和住房建设局网站

在毕业论文撰写过程中,学生常面临开题报告和正文高效完成的难题,传统人工写作虽灵活性较强但效率不足,而AI工具能迅速生成内容并优化文本重复率与机器痕迹;基于对9款平台的横向评测结果,可精准筛选出适配学术场景的智能…

张小明 2026/1/13 2:03:19 网站建设

惠州建站公司深圳网页设计推广渠道

特性 低压工作:1.8V至5.5V 低导通电阻:0.5Q(典型值) 低导通电阻平坦度 -3dB带宽:15MHz 快速开关时间吨N50ns 关断时间15纳秒 轨到轨操作 典型功耗(<0.01W) 兼容TTL/CMOS 微型封装

张小明 2026/1/13 2:03:21 网站建设

如何做视频网站不侵权wordpress 数据接口

论文查重标准解读&#xff1a;9大平台工具对比排名论文查重标准解读&#xff1a;9大平台工具对比排名创作指南核心AI论文工具对比速览工具名称核心优势适用场景生成速度特色功能Aibiye多模型融合长文本理解全学科论文初稿20-30分钟文献查找自动图表生成Aicheck专业适配低重复率…

张小明 2026/1/13 2:03:19 网站建设

织梦cms网站企业微信app下载安装教育版

第一章&#xff1a;为什么90%的PHP开发者忽视了低代码插件的潜力&#xff1f;真相令人震惊许多PHP开发者仍固守传统开发模式&#xff0c;对低代码插件抱有误解&#xff0c;认为其仅适用于简单项目或非技术人员。然而&#xff0c;真实情况是&#xff0c;现代低代码工具已具备高度…

张小明 2026/1/12 4:03:46 网站建设