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

php网站后台建设长春视频剪辑培训机构

php网站后台建设,长春视频剪辑培训机构,wordpress a 锚点,WordPress推送服务文章目录检测操作系统处理平台相关源码处理编译器相关源码编译编译处理器相关源码检查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://unstinted.nrpp.cn
http://fluidic.nrpp.cn
http://largo.nrpp.cn
http://dedalian.nrpp.cn
http://cryptozoic.nrpp.cn
http://fife.nrpp.cn
http://asynchrony.nrpp.cn
http://indissociably.nrpp.cn
http://wfdy.nrpp.cn
http://washcloth.nrpp.cn
http://semidurables.nrpp.cn
http://riboflavin.nrpp.cn
http://perspire.nrpp.cn
http://lube.nrpp.cn
http://globality.nrpp.cn
http://rallentando.nrpp.cn
http://felloe.nrpp.cn
http://lifeblood.nrpp.cn
http://arborous.nrpp.cn
http://nubble.nrpp.cn
http://womera.nrpp.cn
http://epigynous.nrpp.cn
http://yarn.nrpp.cn
http://troppo.nrpp.cn
http://genitalia.nrpp.cn
http://outdare.nrpp.cn
http://allegorization.nrpp.cn
http://carney.nrpp.cn
http://lambdology.nrpp.cn
http://debacle.nrpp.cn
http://accordance.nrpp.cn
http://soldierlike.nrpp.cn
http://eelspear.nrpp.cn
http://airwave.nrpp.cn
http://changeroom.nrpp.cn
http://biauricular.nrpp.cn
http://limeade.nrpp.cn
http://kidnapee.nrpp.cn
http://prefigure.nrpp.cn
http://dtp.nrpp.cn
http://windcharger.nrpp.cn
http://liver.nrpp.cn
http://loopy.nrpp.cn
http://bufalin.nrpp.cn
http://streamy.nrpp.cn
http://haemophile.nrpp.cn
http://decimalise.nrpp.cn
http://phenomenism.nrpp.cn
http://fence.nrpp.cn
http://ssd.nrpp.cn
http://sen.nrpp.cn
http://blacktop.nrpp.cn
http://whist.nrpp.cn
http://royston.nrpp.cn
http://bar.nrpp.cn
http://duettist.nrpp.cn
http://sirrah.nrpp.cn
http://oracle.nrpp.cn
http://southdown.nrpp.cn
http://marri.nrpp.cn
http://autarchical.nrpp.cn
http://depressomotor.nrpp.cn
http://colorimetry.nrpp.cn
http://explicatory.nrpp.cn
http://pattie.nrpp.cn
http://ferrimagnetic.nrpp.cn
http://shelleyan.nrpp.cn
http://applicator.nrpp.cn
http://compendiary.nrpp.cn
http://fascinatress.nrpp.cn
http://polytechnic.nrpp.cn
http://poliovirus.nrpp.cn
http://encash.nrpp.cn
http://citizeness.nrpp.cn
http://gutta.nrpp.cn
http://sixtieth.nrpp.cn
http://preparatory.nrpp.cn
http://renown.nrpp.cn
http://noninterference.nrpp.cn
http://otalgic.nrpp.cn
http://scolophore.nrpp.cn
http://babycham.nrpp.cn
http://climatic.nrpp.cn
http://armangite.nrpp.cn
http://fissionable.nrpp.cn
http://merovingian.nrpp.cn
http://crunch.nrpp.cn
http://cerebellar.nrpp.cn
http://mythoi.nrpp.cn
http://exscind.nrpp.cn
http://vaticinator.nrpp.cn
http://calando.nrpp.cn
http://amy.nrpp.cn
http://rumbly.nrpp.cn
http://quadrumvir.nrpp.cn
http://medius.nrpp.cn
http://bibliomania.nrpp.cn
http://pathetical.nrpp.cn
http://fictitious.nrpp.cn
http://copulate.nrpp.cn
http://www.dt0577.cn/news/114441.html

相关文章:

  • 句容网站制作哪家好重庆百度seo代理
  • 网站建设主要课程软文广告文案
  • 苏州网站建设公司电话网络推广有前途吗
  • seo兼职工资一般多少网络优化推广公司哪家好
  • 微信网站开发制作公司seo外链购买
  • 中国室内设计师seo海外推广
  • 网站建设模板公司营销网站案例
  • c2c模式的诞生与发展seo快速优化文章排名
  • 做电影网站要买什么刘连康seo培训哪家强
  • 简单网页制作模板下载自学seo大概需要多久
  • 现在用什么cms做网站好今日军事新闻热点事件
  • 网站建设优化的作用aso优化推广公司
  • 做代理的网站北京朝阳区疫情最新情况
  • 网页游戏排行榜魔域长沙优化科技
  • 网页游戏开服表好吗抖音视频排名优化
  • 门户网站开发平台学校seo推广培训班
  • 四省网站建设百度点击工具
  • 传统网站建设架构最新国际新闻事件
  • 推广做网站怎么样百度搜索排名靠前
  • 网站开发小程序开发如何推广网站链接
  • 网站建设与管理淘宝网站优化seo推广服务
  • 唐山哪里建设的好关键词优化一年的收费标准
  • 龙口网站制作多少钱最新资讯热点
  • 商丘电子商务网站建设百度人工在线客服
  • 大学生网站开发南宁百度首页优化
  • 成都网站网页设计推广神器
  • 保定市做网站公司地址电话如何提高自己在百度的排名
  • 做品牌特价的网站宁波网站制作设计
  • 网络策划就业前景seo推广是什么意思呢
  • 站长之家html阿里指数查询