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

建立网站有免费的吗制作网站品牌公司哪家好

建立网站有免费的吗,制作网站品牌公司哪家好,国际最新局势最新消息,wordpress get_search_form()步4:安装与测试 现在开始给项目添加安装规则和支持测试. 安装规则 安装规则非常简单:对MathFunctions,想安装库和头文件,对应用,想安装可执行文件和配置头. 所以在MathFunctions/CMakeLists.txt尾添加: install(TARGETS MathFunctions DESTINATION lib) install(FILES Mat…步4:安装与测试 现在开始给项目添加安装规则和支持测试. 安装规则 安装规则非常简单:对MathFunctions,想安装库和头文件,对应用,想安装可执行文件和配置头. 所以在MathFunctions/CMakeLists.txt尾添加: install(TARGETS MathFunctions DESTINATION lib) install(FILES MathFunctions.h DESTINATION include)在顶层CMakeLists.txt尾添加: install(TARGETS Tutorial DESTINATION bin) install(FILES ${PROJECT_BINARY_DIR}/TutorialConfig.hDESTINATION include )就完成了本地安装. 现在运行cmake或cmake-gui来配置项目并构建. 然后在命令行中运行cmake的install选项来执行安装步骤(3.15引入). 对多配置工具,记得用--config来指定配置.如果用IDE,直接构建INSTALL目标即可.这一步会安装适合的头文件,库和可执行文件: camke --install .CMake的CMAKE_INSTALL_PREFIX变量确定安装文件的根目录.如果使用cmake --install命令,可用--prefix参数覆盖安装前缀: cmake --install . --prefix /home/myuser/installdir浏览安装目录,然后验证是否可运行安装的Tutorial. 支持测试 接着测试应用,在顶级CMakeLists.txt尾,可打开测试功能,然后加一些基本测试来验证是否正确安装. enable_testing() //是否运行应用 add_test(NAME Runs COMMAND Tutorial 25) //使用消息是否工作? add_test(NAME Usage COMMAND Tutorial) set_tests_properties(UsagePROPERTIES PASS_REGULAR_EXPRESSION Usage:.*number ) //定义简化加测试的函数 function(do_test target arg result)add_test(NAME Comp${arg} COMMAND ${target} ${arg})set_tests_properties(Comp${arg}PROPERTIES PASS_REGULAR_EXPRESSION ${result} ) endfunction(do_test)//测试 do_test(Tutorial 4 4 is 2) do_test(Tutorial 9 9 is 3) do_test(Tutorial 5 5 is 2.236) do_test(Tutorial 7 7 is 2.645) do_test(Tutorial 25 25 is 5) do_test(Tutorial -25 -25 is [-nan|nan|0]) do_test(Tutorial 0.0001 0.0001 is 0.01)对多配置生成器,要用-C来指定配置类型. ctest -C Debug -VV ctest -C Release -VV或也可在IDE中构建RUN_TESTS目标. 步5:增加系统自检 现在想在项目中增加一些目标平台可能没有依赖的代码.如,要加入代码依赖目标平台是否有log和exp函数. 如果平台有log和exp,则就在mysqrt函数里使用.首先在顶层CMakeLists.txt里用CheckSymbolExists来测试是否有这些函数? 一些平台,如果没有log和exp,就需要连接到m库. include(CheckSymbolExists) check_symbol_exists(log math.h HAVE_LOG) check_symbol_exists(exp math.h HAVE_EXP) if(NOT (HAVE_LOG AND HAVE_EXP))unset(HAVE_LOG CACHE)unset(HAVE_EXP CACHE)set(CMAKE_REQUIRED_LIBRARIES m)check_symbol_exists(log math.h HAVE_LOG)check_symbol_exists(exp math.h HAVE_EXP)if(HAVE_LOG AND HAVE_EXP)target_link_libraries(MathFunctions PRIVATE m)endif() endif()现在给TutorialConfig.h.in添加一些定义,这样就可在mysqrt.cxx里使用了: //平台是否提供exp和log功能? #cmakedefine HAVE_LOG #cmakedefine HAVE_EXP如果在系统上可用log和exp,则在mysqrt里使用它们.在MathFunctions/mysqrt.cxx里的mysqrt里添加下述代码(别忘了返回值前加#endif): #if defined(HAVE_LOG) defined(HAVE_EXP)double result exp(log(x) * 0.5);std::cout Computing sqrt of x to be result 用log和exp std::endl; #elsedouble result x;还要修改mysqrt.cxx来包含cmath: #include cmath运行cmake或cmake-gui来配置项目,然后构建并执行Tutorial. 会注意到没用log和exp,即使认为它们应该是可用的.很容易发现,在mysqrt.cxx中忘记包含TutorialConfig.h了. 也需要更新MathFunctions/CMakeLists.txt,这样mysqrt.cxx才可定位文件: target_include_directories(MathFunctionsINTERFACE${CMAKE_CURRENT_SOURCE_DIR}PRIVATE${CMAKE_BINARY_DIR} )更新后,继续构建项目,然后运行Tutorial.如果仍没有使用log和exp,打开构建目录下的生成的Tutorial.h文件,可能他们在当前系统下不可用的. 那个函数目前结果更好呢,sqrt还是mysqrt? 指定编译定义 除了在TutorialConfig.h中存储HAVE_LOG和HAVE_EXP外,还有更好的地方么?试试用target_compile_definitions(). 首先在TutorialConfig.h中移除定义,不再需要从mysqrt.cxx中包含TutorialConfig.h或在MathFunctions/CMakeLists.txt中额外包含它了. 接着可把HAVE_LOG和HAVR_EXP的检查移动到MathFunctions/CMakeLists.txt中,然后把这些值设置为PRIVATE编译定义. include(CheckSymbolExists) check_symbol_exists(log math.h HAVE_LOG) check_symbol_exists(exp math.h HAVE_EXP) if(NOT (HAVE_LOG AND HAVE_EXP))unset(HAVE_LOG CACHE)unset(HAVE_EXP CACHE)set(CMAKE_REQUIRED_LIBRARIES m)check_symbol_exists(log math.h HAVE_LOG)check_symbol_exists(exp math.h HAVE_EXP)if(HAVE_LOG AND HAVE_EXP)target_link_libraries(MathFunctions PRIVATE m)endif() endif()//添加编译定义 if(HAVE_LOG AND HAVE_EXP)target_compile_definitions(MathFunctionsPRIVATE HAVE_LOG HAVE_EXP) endif()调整更新后,重构项目,再运行Tutorial并确认结果. 步6:添加自定义命令和生成文件 现在,决定不想再用平台的log和exp函数,并想生成一些会在mysqrt函数里使用到的预计算值表. 这里,创建该表并作为构建的一步,然后编译到应用中. 首先,移除MathFunctions/CMakeLists.txt中的检查log和exp.然后移除mysqrt.cxx检查对HAVE_LOG和HAVR_EXP.同时,也可移除#include cmath. 在MathFunctions子目录下,有个MakeTable.cxx新文件来生成表格. 浏览该文件,可发现,表格是C代码生成的,且通过参数传入输出文件名. 下一步是在MathFunctions/CMakeLists.txt中添加合适命令来构建MakeTable可执行文件,然后作为构建流程的一部分来运行. 需要一些命令来完成这一步. 首先,在MathFunctions/CMakeLists.txt的开头,添加MakeTable为可执行文件目标. add_executable(MakeTable MakeTable.cxx)然后添加一项定义命令来指定如何运行MakeTable创建表格. add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Table.hCOMMAND MakeTable ${CMAKE_CURRENT_BINARY_DIR}/Table.hDEPENDS MakeTable )接着要让CMake知道mysqrt.cxx依赖创建的Table.h.把生成Table.h添加到MathFunctions库的源列表. add_library(MathFunctionsmysqrt.cxx${CMAKE_CURRENT_BINARY_DIR}/Table.h )现在使用生成表,首先,修改mysqrt.cxx来包含Table.h,然后重写mysqrt函数以使用这张表: double mysqrt(double x) {if (x 0) {return 0;}//使用该表帮助查找初值double result x;if (x 1 x 10) {std::cout 用表 std::endl;result sqrtTable[static_cast(x)];}//十次迭代for (int i 0; i 10; i) {if (result 0) {result 0.1;}double delta x - (result * result);result result 0.5 * delta / result;std::cout 计算 x 为 result std::endl;}return result; }运行cmake或cmake-gui来配置项目并构建. 构建项目时,首先构建的是MakeTable,然后会运行MakeTable并创建Table.h.最后编译包含了Table.h的mysqrt.cxx来创建MathFunctions库. 运行Tutorial可执行文件,然后验证使用了表格.
http://www.zqtcl.cn/news/868240/

相关文章:

  • 网站改版升级通知国外服务器公司有哪些
  • 做网站的s标的软件深圳网站建设 湖南岚鸿
  • 设计网站建设的合同书公司装修合同范本
  • 门户网站的好处企业邮箱系统
  • 重庆企业建站公司有那些网站做结伴旅游的
  • 创意营销策划案例网站网页制作及优化
  • 网站上动画视频怎么做的建设兵团12师教育局网站
  • 博客网站开发思维导图app网站制作公司
  • 池州网站建设有哪些公司兴义网站seo
  • seo优化网站模板网站建设的七大优缺点
  • 天猫国际采取的跨境电商网络营销方式关键词排名优化公司推荐
  • 亳州建设网站做网站文字怎么围绕图片
  • 网站开发 项目计划外链建设给网站起的作用
  • 你好南京网站网站开发实施步骤和说明
  • 文化共享工程网站建设情况wordpress菠菜插件
  • 网站大气是什么意思哈尔滨做网站电话
  • 公司网站站群是什么化妆品网站设计欣赏
  • 网站公司未来计划ppt怎么做平潭做网站
  • 做网站和推广工资多少招聘网站建设价格
  • 网站建设 响应式 北京网架公司十大排名榜
  • 网站推广目标关键词是什么意思网站推广软件工具
  • 哪里可以做免费的物流网站wordpress为什么放弃
  • 做网站需要多少钱 都包括什么高端大气的网站首页
  • 黄石做网站联系最近的国际新闻
  • 网站建设与运营的预算方案淘宝禁止了网站建设类
  • 做网站的顺序编写app的软件
  • 站长联盟个人网站不备案
  • 惠州建设工程交易网站网站服务器失去响应
  • 网站下拉广告iphone app wordpress
  • 网站图片怎样做seo优化如何重新安装wordpress