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

php网站后台建设沈阳今天刚刚发生的新闻

php网站后台建设,沈阳今天刚刚发生的新闻,管理能力提升培训课程,最便宜做公司网站文章目录检测操作系统处理平台相关源码处理编译器相关源码编译编译处理器相关源码检查cpu是32位还是64位的检测cpu架构处理 CPU指令相关源码案例展示 Eigen3向量化加速项目设置编译器开启向量化优化《CMake cookbook》笔记检测操作系统 cmake中通过CMAKE_SYSTEM_NAME变量来识别…

文章目录

  • 检测操作系统
  • 处理平台相关源码
  • 处理编译器相关源码编译
  • 编译处理器相关源码
    • 检查cpu是32位还是64位的
    • 检测cpu架构
  • 处理 CPU指令相关源码
  • 案例展示 Eigen3向量化加速项目
    • 设置编译器开启向量化优化

《CMake cookbook》笔记

检测操作系统

cmake中通过CMAKE_SYSTEM_NAME变量来识别系统类型。
主流操作系统:

  • Linux
  • Windows
  • Darwin (即macos)
  • AIX (IBM AIX)

例如:

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")do something
endif()

处理平台相关源码

在cpp等源文件中通过宏控制操作系统平台相关源码

例如:

  • target_compile_definitions(targetName PUBLIC/INTERFACE/PRIVATE “IS_LINUX”)

    • 为特定目标设定宏定义等, 精细度控制
  • add_definitions(-DIS_LINUX)

    • 整个CMakeLists.txt项目中都设置宏,精细度小

在源文件中定义

source.cpp
......
#ifdef IS_WINDOWSsource code for windows
#elif IS_LINUXsource code for linux
#elif IS_Darwinsource code for macos
#endif
......

在CMakeLists.txt中定义如下

....
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")target_compile_definitions(helloworld PUBLIC "IS_LINUX")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")target_compile_definitions(helloworld PUBLIC "IS_MACOS")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")target_compile_definitions(helloworld PUBLIC "IS_WINDOWS")
endif()
.....

target_compile_definitions()为特定目标进行定义和编译。
例如

#为源文件helloworld.cpp生成的target hellworld可执行文件定义一个宏IS_LINUX
target_compile_definitions(helloworld PUBLIC "IS_LINUX")

处理编译器相关源码编译

与编译系统相关的源码一样,为源文件设置宏定义。

  • 通过CMAKE_<LANG>_COMPILER_ID获取编译器名称, <LANG>为:
    • CXX
    • C
    • PYTHON
  • 获取编译器名称后为源文件定义宏
    例如:
# 定义源项目中使用的宏定义 IS_XXX_CXX_COMPILER
target_compile_definitions(HelloWorld PUBLIC "IS_${CMAKE_CXX_COMPILER_ID}_CXX_COMPILER")

编译处理器相关源码

检查cpu是32位还是64位的

通过cmake系统变量CMAKE_SIZEOF_VOID_P的大小进行判断.

  • CMAKE_SIZEOF_VOID_P==8 为64位cpu
  • 否则为32位cpu
    例如:
CMakeLists.txt
if(CMAKE_SIZEOF_VOID_P EQUAL 8)#64位cpu相关cmake设置
else()#32位cpu相关cmake设置
endif()

检测cpu架构

通过cmake的CMAKE_HOST_SYSTEM_PROCESSOR系统变量来识别cpu架构

常见cpu架构有:

  • i386
  • i686
  • x86_64
  • AMD64

例如:

if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386")#i386相关设置elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")#i686相关CMake设置elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")#x86_64相关CMake设置elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "AMD64")#AMD64相关CMake设置else()
endif()
message(STATUS "${CMAKE_HOST_SYSTEM_PROCESSOR} architecture detected")

CMAKE_SYSTEM_PROCESSORCMAKE_HOST_SYSTEM_PROCESSOR有细微差别.

处理 CPU指令相关源码

cmake_host_system_information 该cmake指令用于查询系统中的信息.
例如:

cmake_host_system_information(RESULT _NUMBER_OF_LOGICAL_CORES  QUERY NUMBER_OF_LOGICAL_CORES)

cpu逻辑核心数结果存放在_NUMBER_OF_LOGICAL_CORES中,类似于系统检测, 系统相关, 编译器相关, CPU相关. 获取cpu指令集相关信息后就能在项目中针对不同指令集,包含不同的源文件从而生成适合平台的可执行文件(或库).

tips:

  • 在add_executable()中,可以先不指定源文件
  • 通过检测不同平台的相关信息, 通过cmake if else语句添加对应的源文件.

例如:

# add_executable中源文件为空是为了依据检测到的操作系统类型,编译器类型,cpu架构等来添加相应的源文件
add_executable(targetName "")
if( condition )
# 添加源文件
target_sources(targetName PRIVATE relate_source_file)
endif()
# add file folder for target
target_include_directories(ISC_infoPRIVATE${PROJECT_BINARY_DIR} #当前cmakelists中对应的build文件夹
)
......
#修改并复制一份源文件到另一个位置,比如target_include_directories中指定的build文件夹
configure_file(config.h.in config.h @ONLY)

案例展示 Eigen3向量化加速项目

处理器的向量功能可以加速程序的执行,例如向量运算. eigen是线性代数C++模板库.

设置编译器开启向量化优化

#checkCXXCompilerFlag.cmake标准模块文件:
include(CheckCXXCompilerFlag)
#GNU编译器的向量化加速编译选项
check_cxx_compiler_flag("-march=native" _march_native_works)
# intel编译器的向量化加速编译选项
check_cxx_compiler_flag("-xHost" _xhost_works)
#根据获得的值(例如_march_native_works设定编译选项)
list(APPEND flags "-march=native")
# or 
list(APPEND flags "-xHost")
  • 指示编译器检查处理器,并为当前体系结构生成本机编译优化选项.
  • 使用CheckCXXCompilerFlag.cmake模块提供的check_cxx_compiler_flag函数进行编译器标志的检查
http://www.ritt.cn/news/26477.html

相关文章:

  • 有代源码怎么做自己网站淘宝网店代运营正规公司
  • 网站 公众号 建设方案高端网站建设南宁
  • 做画册好的国外网站推荐非企户百度推广
  • 怎么做付款下载网站百度站内搜索代码
  • 高级网站开发工程师证书企业网络推广方案
  • 常德网站建设哪家快郑州seo优化外包公司
  • 如何开发cms网站全国疫情高峰感染进度
  • 网站后台文章添加成功 不显示广告sem是什么意思
  • 网站建设数据保存在哪儿百度电脑网页版
  • 哪个网站有学做内帐的视频百度开发平台
  • 如何写一个可以做报价计算的网站怎么在网上做推广
  • 网页设计图片滚动代码怎么弄杭州网站推广优化
  • 成都网站建设哪家万网域名注册
  • 基于java的网站设计毕业论文正规排名网站推广公司
  • 装修设计公司哪个好关键词seo优化公司
  • 对接公众号的网站怎么做最新nba排名
  • c 做网站用什么框架百度重庆营销中心
  • 如何做网站备案网站推广软件排名
  • 查权重工具免费seo关键词优化服务
  • 章丘建设网站百度推广登录入口登录
  • 手机视频网站建设搜索排名广告营销怎么做
  • 义乌网站建设百度资源平台
  • 做网站打电话话术英文谷歌优化
  • 品牌网站设计制作服务公司海外推广专员
  • wordpress金融网站模板搜索引擎营销的名词解释
  • 做购物网站赚钱吗怎么优化自己公司的网站
  • 手机移动端网站怎么做seo关联词有哪些类型
  • .net 网站开发架构网页制作教程
  • 长沙市网站建设推广建站网站关键词优化
  • 做网站优化费用南京谷歌seo