ftp怎么修改网站小程序开发教程

张小明 2025/12/30 19:40:01
ftp怎么修改网站,小程序开发教程,正规医院看男科大概多少钱,wordpress获取附件add_executable() 是 CMake 中用于创建可执行文件目标的核心命令#xff0c;它将源代码文件编译链接成可执行程序。 基本语法 1. 普通可执行文件 add_executable(target [WIN32] [MACOSX_BUNDLE][EXCLUDE_FROM_ALL]source1 [source2 ...])2. 导入的可执行文件 add_exe…add_executable()是 CMake 中用于创建可执行文件目标的核心命令它将源代码文件编译链接成可执行程序。基本语法1.普通可执行文件add_executable(target [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])2.导入的可执行文件add_executable(target IMPORTED [GLOBAL])3.别名可执行文件add_executable(target ALIAS aliased-target)参数详解必需参数target作用定义可执行文件的目标名称命名规则在项目中必须唯一建议使用小写字母、数字和下划线避免使用 CMake 关键字生成的文件名Unix/Linux/macOS:targetWindows:target.exe可通过set_target_properties()修改可选关键字参数WIN32作用创建 Windows GUI 应用程序非控制台程序效果Windows链接时添加/SUBSYSTEM:WINDOWS其他平台忽略此标志使用场景创建不带控制台窗口的 GUI 应用程序# Windows GUI 应用程序 add_executable(myapp WIN32 main.cpp gui.cpp) # 等价的手动设置不推荐 if(WIN32) set_target_properties(myapp PROPERTIES WIN32_EXECUTABLE TRUE ) endif()MACOSX_BUNDLE作用创建 macOS 应用程序包.app效果生成.app应用程序包设置正确的 macOS 属性需要配合set_target_properties()设置 bundle 属性# macOS 应用程序包 add_executable(myapp MACOSX_BUNDLE main.cpp) # 设置 bundle 属性 set_target_properties(myapp PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in MACOSX_BUNDLE_BUNDLE_NAME My Application MACOSX_BUNDLE_BUNDLE_VERSION 1.0.0 MACOSX_BUNDLE_SHORT_VERSION_STRING 1.0 MACOSX_BUNDLE_GUI_IDENTIFIER com.company.myapp )EXCLUDE_FROM_ALL作用从默认构建目标中排除效果运行make或cmake --build .时不自动构建必须显式指定目标名构建make myapp使用场景示例程序测试工具可选组件# 示例程序不包含在默认构建中 add_executable(example EXCLUDE_FROM_ALL example.cpp) add_executable(demo EXCLUDE_FROM_ALL demo.cpp) # 构建所有示例 add_custom_target(examples DEPENDS example demo COMMENT 构建所有示例程序 )源代码文件可以列出多个源文件支持相对路径和绝对路径可以使用生成器表达式可以使用变量和文件列表详细用法示例基础示例# 最简单的单文件程序 add_executable(hello_world main.cpp) # 多文件程序 add_executable(calculator main.cpp calculator.cpp calculator.h ui.cpp ui.h ) # 使用变量组织源文件 set(APP_SOURCES src/main.cpp src/core.cpp src/utils.cpp ) set(APP_HEADERS include/core.h include/utils.h ) add_executable(myapp ${APP_SOURCES} ${APP_HEADERS})使用文件通配符# 方法1使用 file(GLOB) - 注意新增文件不会自动重新配置 file(GLOB SOURCES src/*.cpp) file(GLOB HEADERS include/*.h) add_executable(myapp ${SOURCES} ${HEADERS}) # 方法2更安全的通配方式 file(GLOB SOURCES_CONFIGURE src/*.cpp src/*.c) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sources.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/sources.cmake) include(${CMAKE_CURRENT_BINARY_DIR}/sources.cmake) # 方法3显式列出所有文件最推荐 set(MANUAL_SOURCES src/main.cpp src/core/core.cpp src/core/processor.cpp src/utils/fileutil.cpp src/utils/stringutil.cpp ) add_executable(myapp ${MANUAL_SOURCES})条件编译# 根据平台选择不同的源文件 set(COMMON_SOURCES main.cpp common.cpp ) if(WIN32) set(PLATFORM_SOURCES win32/platform.cpp) set(PLATFORM_DEFINES WIN32_LEAN_AND_MEAN) elseif(APPLE) set(PLATFORM_SOURCES macos/platform.mm) # 注意 .mm 是 Objective-C set(PLATFORM_DEFINES APPLE_SILICON) elseif(UNIX) set(PLATFORM_SOURCES linux/platform.cpp) set(PLATFORM_DEFINES LINUX) endif() add_executable(myapp ${COMMON_SOURCES} ${PLATFORM_SOURCES} ) target_compile_definitions(myapp PRIVATE ${PLATFORM_DEFINES})使用生成器表达式# 根据配置选择不同的源文件 add_executable(myapp main.cpp $$CONFIG:Debug:debug_utils.cpp $$CONFIG:Release:release_optimizations.cpp $$BOOL:${ENABLE_PROFILING}:profiling.cpp ) # 根据编译器选择实现 add_executable(myapp main.cpp $$CXX_COMPILER_ID:GNU:gnu_specific.cpp $$CXX_COMPILER_ID:MSVC:msvc_specific.cpp $$CXX_COMPILER_ID:Clang,AppleClang:clang_specific.cpp )高级用法1.导入的可执行文件用于引用外部构建的可执行文件。# 导入外部构建的可执行文件 add_executable(external_tool IMPORTED) # 设置导入的可执行文件路径 set_target_properties(external_tool PROPERTIES IMPORTED_LOCATION /usr/bin/ffmpeg IMPORTED_LOCATION_DEBUG /usr/bin/ffmpeg-debug IMPORTED_LOCATION_RELEASE /usr/bin/ffmpeg ) # 在自定义命令中使用 add_custom_command( OUTPUT processed.mp4 COMMAND external_tool -i input.mp4 processed.mp4 DEPENDS input.mp4 ) # GLOBAL 版本在整个构建树中可见 add_executable(global_tool IMPORTED GLOBAL) set_target_properties(global_tool PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/tools/generator )2.别名目标为目标创建别名常用于提供兼容性或简化名称。# 创建主要目标 add_executable(my_application_long_name main.cpp app.cpp ) # 创建别名同目录中 add_executable(app ALIAS my_application_long_name) # 在 add_subdirectory 中使用 # 父目录 CMakeLists.txt add_subdirectory(src) # src/CMakeLists.txt add_executable(internal_app main.cpp) # 导出到父作用域 add_executable(app ALIAS internal_app) set_target_properties(internal_app PROPERTIES EXPORT_NAME app)3.多配置生成器针对不同的构建类型。# Visual Studio 等多配置生成器 add_executable(myapp main.cpp) # 为不同配置设置不同属性 set_target_properties(myapp PROPERTIES DEBUG_POSTFIX _d RELEASE_POSTFIX RELWITHDEBINFO_POSTFIX _rd MINSIZEREL_POSTFIX _ms ) # 设置不同配置的输出目录 set_target_properties(myapp PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/RelWithDebInfo RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR}/MinSizeRel )4.资源文件处理各种类型的资源文件。# Windows 资源文件 (.rc) if(WIN32) add_executable(myapp main.cpp resources.rc # 包含图标、版本信息等 myapp.manifest ) endif() # Qt 资源文件 find_package(Qt5 COMPONENTS Core Widgets REQUIRED) qt5_add_resources(QT_RESOURCES resources.qrc) add_executable(myapp main.cpp mainwindow.cpp ${QT_RESOURCES} ) # 处理数据文件 # 方法1复制到输出目录 configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/data/config.json ${CMAKE_CURRENT_BINARY_DIR}/config.json COPYONLY ) # 方法2作为源文件包含嵌入资源 add_executable(myapp main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/data/default_config.json ) # 在代码中通过文件系统访问目标属性设置常用属性设置add_executable(myapp main.cpp) # 设置输出名称 set_target_properties(myapp PROPERTIES OUTPUT_NAME MyApplication # 生成 MyApplication 或 MyApplication.exe PREFIX # 移除 lib 前缀 SUFFIX # 自定义后缀 ) # 设置版本信息 set_target_properties(myapp PROPERTIES VERSION 1.2.3 SOVERSION 1 ) # 设置编译特性 set_target_properties(myapp PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF ) # 平台特定属性 if(APPLE) set_target_properties(myapp PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist ) endif()链接属性add_executable(myapp main.cpp) # 设置链接库 target_link_libraries(myapp PRIVATE Threads::Threads ${CMAKE_DL_LIBS} ) # 设置链接选项 set_target_properties(myapp PROPERTIES LINK_FLAGS -Wl,--as-needed LINK_FLAGS_DEBUG -g LINK_FLAGS_RELEASE -O3 -s ) # Windows 特定链接选项 if(WIN32) set_target_properties(myapp PROPERTIES LINK_FLAGS /DEBUG:FULL WIN32_EXECUTABLE TRUE ) endif()完整示例项目示例 1跨平台 GUI 应用程序cmake_minimum_required(VERSION 3.15) project(ImageEditor VERSION 1.0.0 LANGUAGES CXX) # 设置 C 标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找依赖 find_package(OpenCV REQUIRED) find_package(Qt5 COMPONENTS Core Widgets Gui REQUIRED) # 源文件分组 set(APP_SOURCES src/main.cpp src/mainwindow.cpp src/imageprocessor.cpp src/tools.cpp ) set(APP_HEADERS include/mainwindow.h include/imageprocessor.h include/tools.h ) set(APP_RESOURCES resources/icons.qrc resources/images.qrc ) set(APP_UI ui/mainwindow.ui ui/toolbar.ui ) # 处理 Qt 资源 qt5_wrap_ui(UI_HEADERS ${APP_UI}) qt5_add_resources(QT_RESOURCES ${APP_RESOURCES}) # 创建应用程序 if(WIN32) add_executable(imageeditor WIN32 ${APP_SOURCES} ${APP_HEADERS} ${UI_HEADERS} ${QT_RESOURCES}) elseif(APPLE) add_executable(imageeditor MACOSX_BUNDLE ${APP_SOURCES} ${APP_HEADERS} ${UI_HEADERS} ${QT_RESOURCES}) else() add_executable(imageeditor ${APP_SOURCES} ${APP_HEADERS} ${UI_HEADERS} ${QT_RESOURCES}) endif() # 设置目标属性 set_target_properties(imageeditor PROPERTIES OUTPUT_NAME ImageEditor DEBUG_POSTFIX _d CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON ) # 包含目录 target_include_directories(imageeditor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/ui # 生成的 UI 头文件 ) # 链接库 target_link_libraries(imageeditor PRIVATE Qt5::Core Qt5::Widgets Qt5::Gui OpenCV::opencv ) # 安装目标 install(TARGETS imageeditor RUNTIME DESTINATION bin BUNDLE DESTINATION . ) if(APPLE) # macOS 特定安装 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/AppIcon.icns DESTINATION ${CMAKE_INSTALL_PREFIX}/ImageEditor.app/Contents/Resources ) endif()示例 2命令行工具cmake_minimum_required(VERSION 3.10) project(FileConverter VERSION 1.2.0 LANGUAGES CXX) # 工具选项 option(ENABLE_GUI 启用 GUI 版本 OFF) option(BUILD_TESTS 构建测试 ON) # 公共源文件 set(COMMON_SOURCES src/common/utils.cpp src/common/fileops.cpp src/common/format.cpp ) set(COMMON_HEADERS include/common/utils.h include/common/fileops.h include/common/format.h ) # 命令行版本 add_executable(fconverter_cli src/cli/main.cpp src/cli/cli_parser.cpp ${COMMON_SOURCES} ) target_include_directories(fconverter_cli PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(fconverter_cli PRIVATE Threads::Threads ) # 设置命令行工具属性 set_target_properties(fconverter_cli PROPERTIES OUTPUT_NAME fconvert RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tools ) # 可选 GUI 版本 if(ENABLE_GUI) find_package(Qt5 COMPONENTS Core Widgets REQUIRED) add_executable(fconverter_gui src/gui/main.cpp src/gui/mainwindow.cpp ${COMMON_SOURCES} ) target_link_libraries(fconverter_gui PRIVATE Qt5::Core Qt5::Widgets Threads::Threads ) set_target_properties(fconverter_gui PROPERTIES OUTPUT_NAME FileConverter WIN32_EXECUTABLE TRUE ) endif() # 测试工具不包含在默认构建中 if(BUILD_TESTS) add_executable(test_runner EXCLUDE_FROM_ALL tests/main.cpp tests/test_utils.cpp tests/test_fileops.cpp ${COMMON_SOURCES} ) target_link_libraries(test_runner PRIVATE GTest::gtest_main ) # 添加测试 add_test(NAME UnitTests COMMAND test_runner) endif()示例 3多目标项目cmake_minimum_required(VERSION 3.14) project(NetworkTools VERSION 2.1.0 LANGUAGES C) # 公共设置 set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 公共源代码 set(COMMON_SOURCES src/common/net_utils.c src/common/logger.c ) set(COMMON_HEADERS include/common/net_utils.h include/common/logger.h ) # 工具1端口扫描器 add_executable(port_scanner tools/scanner/main.c tools/scanner/portscan.c ${COMMON_SOURCES} ) target_include_directories(port_scanner PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_definitions(port_scanner PRIVATE TOOL_NAMEPort Scanner ) # 工具2网络监视器 add_executable(net_monitor tools/monitor/main.c tools/monitor/traffic.c ${COMMON_SOURCES} ) target_include_directories(net_monitor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_compile_definitions(net_monitor PRIVATE TOOL_NAMENetwork Monitor ) # 工具3数据包分析器可选 option(BUILD_PACKET_ANALYZER 构建数据包分析器 OFF) if(BUILD_PACKET_ANALYZER) find_package(PCAP REQUIRED) add_executable(packet_analyzer tools/analyzer/main.c tools/analyzer/packet.c ${COMMON_SOURCES} ) target_include_directories(packet_analyzer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${PCAP_INCLUDE_DIRS} ) target_link_libraries(packet_analyzer PRIVATE ${PCAP_LIBRARIES} ) endif() # 创建聚合目标 add_custom_target(all_tools DEPENDS port_scanner net_monitor COMMENT 构建所有网络工具 ) if(BUILD_PACKET_ANALYZER) add_dependencies(all_tools packet_analyzer) endif()最佳实践1.源文件管理# 不推荐使用 GLOB新增文件不会触发重新配置 file(GLOB ALL_SOURCES src/*.cpp) add_executable(app ${ALL_SOURCES}) # 推荐显式列出源文件 set(SOURCES src/main.cpp src/core.cpp src/utils.cpp ) # 或使用辅助脚本生成源文件列表 configure_file(sources.cmake.in sources.cmake ONLY) include(sources.cmake)2.头文件处理# 将头文件添加到源文件列表支持 IDE add_executable(myapp src/main.cpp include/myapp.h src/internal.h ) # 或者如果不希望在 IDE 中看到头文件 add_executable(myapp src/main.cpp) target_include_directories(myapp PRIVATE include)3.目录组织# 清晰的目录结构 add_executable(myapp src/main.cpp src/core/ core.cpp processor.cpp src/utils/ fileutil.cpp stringutil.cpp src/gui/ mainwindow.cpp dialog.cpp ) # 设置不同的包含目录 target_include_directories(myapp PRIVATE src/core src/utils src/gui ${CMAKE_CURRENT_BINARY_DIR} # 生成的头文件 )4.平台兼容性add_executable(myapp main.cpp) # 平台特定设置 if(WIN32) target_sources(myapp PRIVATE src/platform/win32.cpp $$CONFIG:DEBUG:src/platform/win32_debug.cpp ) target_compile_definitions(myapp PRIVATE _WIN32_WINNT0x0A00) elseif(APPLE) target_sources(myapp PRIVATE src/platform/macos.mm) set_target_properties(myapp PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} ) elseif(UNIX) target_sources(myapp PRIVATE src/platform/linux.cpp) target_link_libraries(myapp PRIVATE pthread dl) endif()常见问题问题 1源文件未找到# 错误相对路径问题 add_executable(app ../other_dir/main.cpp) # 可能工作但不推荐 # 正确使用绝对路径或相对于 CMakeLists.txt 的路径 add_executable(app ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/core.cpp )问题 2重复目标名# 错误目标名重复 add_executable(myapp main.cpp) add_executable(myapp other.cpp) # 错误目标名已存在 # 正确使用不同的目标名 add_executable(app1 main.cpp) add_executable(app2 other.cpp)问题 3生成器表达式错误# 错误生成器表达式使用不当 add_executable(app $IF:1,main.cpp,other.cpp) # 错误IF 不能这样用 # 正确使用合适的生成器表达式 add_executable(app main.cpp $$CONFIG:Debug:debug_helpers.cpp )调试技巧检查目标属性add_executable(myapp main.cpp) # 查看目标的所有属性 get_target_property(SOURCES myapp SOURCES) message(STATUS 源文件: ${SOURCES}) # 查看链接库 get_target_property(LIBS myapp LINK_LIBRARIES) message(STATUS 链接库: ${LIBS}) # 查看包含目录 get_target_property(INCLUDES myapp INCLUDE_DIRECTORIES) message(STATUS 包含目录: ${INCLUDES})验证目标function(validate_target target_name) if(NOT TARGET ${target_name}) message(FATAL_ERROR 目标 ${target_name} 不存在) endif() get_target_property(target_type ${target_name} TYPE) if(NOT target_type STREQUAL EXECUTABLE) message(WARNING ${target_name} 不是可执行文件目标) endif() endfunction() add_executable(myapp main.cpp) validate_target(myapp)add_executable()是 CMake 构建可执行程序的基础合理使用可以创建高效、可维护的跨平台应用程序。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

免费网上商城网站建设网站建设合同范本简易版

NPP Multi-Biome: Global Primary Production Data Initiative Products, R2 简介 净初级生产力(NPP)估算数据由全球初级生产力数据倡议(GPPDI)汇编。该数据库涵盖 2523 个独立站点和 5164 个半度网格单元,并经过生态…

张小明 2025/12/30 19:40:01 网站建设

如何建设一个专业的网站浙江政务服务网

第一章:【技术专家亲述】我如何在项目中抉择Open-AutoGLM和DeepSeek?这3点决定成败在参与多个企业级AI推理平台选型过程中,我曾面临一个关键决策:选择Open-AutoGLM还是DeepSeek作为核心语言模型引擎。最终的判断基于以下三个维度的…

张小明 2025/12/30 19:39:25 网站建设

大型网站制作软件dz网站模版

第一章:Open-AutoGLM离线部署的核心挑战 在将Open-AutoGLM模型部署至离线环境时,开发者面临一系列技术性难题。这些挑战不仅涉及计算资源的合理配置,还包括模型依赖项的完整性、推理性能的优化以及安全策略的适配。 模型体积与硬件资源限制 …

张小明 2025/12/30 19:38:49 网站建设

网站建设的客户唐山网站建设制作

第一章:Open-AutoGLM开源源码Open-AutoGLM 是一个面向自动化自然语言处理任务的开源框架,旨在通过可扩展的模块化设计支持大语言模型的快速部署与微调。该项目基于 PyTorch 构建,提供了从数据预处理到模型推理的一站式解决方案,适…

张小明 2025/12/30 19:38:14 网站建设

网站建设管理情况的通报制造业网站开发

FaceFusion开源项目升级:支持多场景人脸可视化分析在直播美颜、虚拟试妆甚至刑侦模拟中,我们越来越频繁地看到“换脸”技术的身影。然而,大多数现有工具仍停留在“一键融合”的黑盒阶段——效果惊艳却难以控制,生成结果不可解释&a…

张小明 2025/12/30 19:37:41 网站建设

wordpress主题分类目录主题上海seo推广公司

诸神缄默不语-个人技术博文与视频目录 专栏还没有建,先列目录。具体的叙述结构也待定。 网站数据分析 招聘求职网站电商平台电影/书籍评论内容平台弹幕/评论 天气产业文献

张小明 2025/12/30 19:37:06 网站建设