当前位置: 首页 > wzjs >正文

北京网站网页设计深圳高端设计公司有哪些

北京网站网页设计,深圳高端设计公司有哪些,如何去建设一个企业网站,网站备案经验CMake 构建系统重点内容 1 基本语法与结构 cmake_minimum_required() 指定使用的最低 CMake 版本,防止不同版本行为不一致: cmake_minimum_required(VERSION 3.16)project() 定义项目名称、语言和版本: project(MyApp VERSION 1.0 LANGU…

CMake 构建系统重点内容


1 基本语法与结构

cmake_minimum_required()

指定使用的最低 CMake 版本,防止不同版本行为不一致:

cmake_minimum_required(VERSION 3.16)

project()

定义项目名称、语言和版本:

project(MyApp VERSION 1.0 LANGUAGES C CXX)

add_executable()

添加一个可执行文件目标:

add_executable(myapp main.cpp)

add_library()

添加一个静态或动态库:

add_library(mylib STATIC lib.cpp)
# 或
add_library(mylib SHARED lib.cpp)

target_include_directories()

指定目标使用的头文件搜索路径:

target_include_directories(myappPRIVATE ${CMAKE_SOURCE_DIR}/include
)
  • PRIVATE: 仅本目标使用
  • PUBLIC: 本目标及依赖它的目标都使用
  • INTERFACE: 只导出给依赖者,不用于本身

target_link_libraries()

链接库或其他目标:

target_link_libraries(myappPRIVATE mylibPRIVATE pthread
)

target_compile_options()

添加编译选项:

target_compile_options(myapp PRIVATE -Wall -O2)

target_compile_definitions()

添加宏定义(等价于 -D):

target_compile_definitions(myapp PRIVATE VERSION="1.0")

2 构建类型(Build Type)

通过 CMAKE_BUILD_TYPE 控制不同构建模式:

cmake -DCMAKE_BUILD_TYPE=Release ..
构建类型描述
Debug含调试信息,关闭优化,默认编译 -g
Release启用优化 -O3,无调试信息
RelWithDebInfo含调试信息 + 优化(适合性能调试)
MinSizeRel最小二进制文件(嵌入式)

3 编译器检测与选项控制

CMake 可检测编译器与平台差异,并根据平台设置不同选项:

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")target_compile_options(myapp PRIVATE -Wall -Wextra)
endif()if (MSVC)target_compile_options(myapp PRIVATE /W4)
endif()

4 子模块与子项目支持

add_subdirectory()

添加子模块项目:

add_subdirectory(thirdparty/mylib)
target_link_libraries(myapp PRIVATE mylib)
  • 要求子目录下有 CMakeLists.txt

FetchContent(现代推荐)

自动下载第三方依赖并引入构建流程:

include(FetchContent)
FetchContent_Declare(jsonGIT_REPOSITORY https://github.com/nlohmann/json.gitGIT_TAG v3.11.2
)
FetchContent_MakeAvailable(json)
target_link_libraries(myapp PRIVATE nlohmann_json::nlohmann_json)

适合构建阶段临时获取依赖而不污染系统环境。


5 外部项目支持:ExternalProject_Add

用于构建不能直接作为子目录添加的外部项目(适用于非 CMake 项目):

include(ExternalProject)
ExternalProject_Add(extlibURL https://example.com/extlib.tar.gzCONFIGURE_COMMAND ./configureBUILD_COMMAND makeINSTALL_COMMAND make install
)

可用于引入 Autotools / Makefile 项目。


6 安装与导出

install()

设置安装路径规则:

install(TARGETS myapp DESTINATION bin)
install(FILES include/mylib.h DESTINATION include)

安装到 CMAKE_INSTALL_PREFIX,默认是 /usr/local

执行安装命令:

cmake --install build

export() 与配置导出

为了支持 目标被其他 CMake 项目 find_package 使用,需要导出配置:

install(TARGETS mylib EXPORT mylibTargets DESTINATION lib)
install(EXPORT mylibTargetsFILE mylibTargets.cmakeNAMESPACE mylib::DESTINATION lib/cmake/mylib
)

配合生成配置文件 mylibConfig.cmake

include(CMakePackageConfigHelpers)
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/mylibConfigVersion.cmake"VERSION 1.0COMPATIBILITY SameMajorVersion
)
install(FILES"${CMAKE_CURRENT_SOURCE_DIR}/mylibConfig.cmake""${CMAKE_CURRENT_BINARY_DIR}/mylibConfigVersion.cmake"DESTINATION lib/cmake/mylib
)

这样就能在其他项目中使用:

find_package(mylib REQUIRED)
target_link_libraries(app PRIVATE mylib::mylib)

总结

CMake 总体结构
├── 项目定义与语法
│   ├── cmake_minimum_required()
│   ├── project()
│   ├── add_executable / add_library
│   ├── target_* APIs
├── 构建类型与选项
│   ├── CMAKE_BUILD_TYPE
│   ├── target_compile_options / definitions
├── 多模块与依赖
│   ├── add_subdirectory
│   ├── FetchContent_Declare
│   └── ExternalProject_Add
├── 安装与包导出
│   ├── install()
│   ├── export()
│   └── CMakePackageConfigHelpers
http://www.dtcms.com/wzjs/537070.html

相关文章:

  • 泉州专业网站建设哪家好怎么做移动端网站计算像素
  • 钓鱼网站制作教程wordpress模版如何使用教程
  • 网站备案都审核什么wordpress默认后台
  • 在哪个网站订酒店做申根签证网站怎么添加模块
  • 服务类网站免费建站wordpress 搜索词调用
  • 如何用群晖做自己的网站青岛企业网站制作公司
  • 网站建设与管理工作内容app和网站开发的成本
  • 安庆网站建设先做它个天猫网站
  • 怎样建立营销网站铁道部建设监理协会网站
  • 百度蜘蛛站长服务平台网站增加点击率 怎样做
  • 网站登录按纽是灰色的网络平台怎么创建需要多少钱
  • 果洛州网站建设公司如何建设自己的企业网站
  • vs做的网站源代码聊天网站建设
  • 建设银行贷款业务网站CP网站建设搭建需要多少钱
  • 做网站什么都不懂 怎么做旅游海外推广网站建设方案
  • 网站建设有哪些问题公司部门解散赔偿标准
  • 网站建设推广代理商百度指数总结
  • 求做外宣图网站杭州网站建设就找蓝韵网络
  • 肉菜配送网站建设中天建设集团门户网站
  • 英文站用wordpress网站建设广告宣传素材
  • 中国建设银行社保卡网站wordpress前端注册
  • 深圳沙井做网站东莞做网站要多少钱
  • 做配单ic去什么网站好公众号文章模板素材
  • 网站手机端设计廊坊自助建站模板
  • 长春网站建设5219wordpress 显示备案
  • 为什么招聘网站不能用自己做的简历零基础建设网站教程
  • 网站推广的方法有sem推广一个模拟做实验的网站
  • 济南网站建设 刘彬彬保定满城网站建设
  • 云南网站设计选哪家广告页面模板网站
  • 教育网站制作软件做网站怎么合并单元格