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

江苏瀚和建设网站安卓系统

江苏瀚和建设网站,安卓系统,大连网站制作诚推ls15227,ui是网站建设吗一.CMake简介 你或许听过好几种 Make 工具#xff0c;例如 GNU Make #xff0c;QT 的 qmake #xff0c;微软的 MSnmake#xff0c;BSD Make#xff08;pmake#xff09;#xff0c;Makepp#xff0c;等等。这些 Make 工具遵循着不同的规范和标准#xff0c;所执行的…一.CMake简介 你或许听过好几种 Make 工具例如 GNU Make QT 的 qmake 微软的 MSnmakeBSD MakepmakeMakepp等等。这些 Make 工具遵循着不同的规范和标准所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题如果软件想跨平台必须要保证能够在不同平台编译。而如果使用上面的 Make 工具就得为每一种标准写一次 Makefile 这将是一件让人抓狂的工作。 CMake CMake附图 1 CMake就是针对上面问题所设计的工具它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。 二.常用命令 指定 cmake 的最小版本 cmake_minimum_required(VERSION 3.4.1) 这行命令是可选的我们可以不写这句话但在有些情况下如果 CMakeLists.txt 文件中使用了一些高版本 cmake 特有的一些命令的时候就需要加上这样一行提醒用户升级到该版本之后再执行 cmake。 设置项目名称 project(demo) 设置编译类型 add_executable(demo demo.cpp) # 生成可执行文件 add_library(common STATIC util.cpp) # 生成静态库 add_library(common SHARED util.cpp) # 生成动态库或共享库 add_library 默认生成是静态库通过以上命令生成文件名字demo   libcommon.a  libcommon.so 指定编译包含的源文件 明确指定包含哪些源文件 add_library(demo demo.cpp test.cpp util.cpp) 搜索所有的 cpp 文件 aux_source_directory(. SRC_LIST) # 搜索当前目录下的所有.cpp文件 add_library(demo ${SRC_LIST}) 自定义搜索规则 file(GLOB SRC_LIST *.cpp protocol/*.cpp) add_library(demo ${SRC_LIST}) # 或者 file(GLOB SRC_LIST *.cpp) file(GLOB SRC_PROTOCOL_LIST protocol/*.cpp) add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST}) # 或者 file(GLOB_RECURSE SRC_LIST *.cpp) #递归搜索 FILE(GLOB SRC_PROTOCOL RELATIVE protocol *.cpp) # 相对protocol目录下搜索 add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST}) # 或者 aux_source_directory(. SRC_LIST) aux_source_directory(protocol SRC_PROTOCOL_LIST) add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST}) 查找指定的库文件 find_library(VAR name path)查找到指定的预编译库并将它的路径存储在变量中。 默认的搜索路径为 cmake 包含的系统库因此如果是 NDK 的公共库只需要指定库的 name 即可。 find_library( # Sets the name of the path variable.log-lib# Specifies the name of the NDK library that# you want CMake to locate.log ) 设置包含的目录 include_directories(${CMAKE_CURRENT_SOURCE_DIR}${CMAKE_CURRENT_BINARY_DIR}${CMAKE_CURRENT_SOURCE_DIR}/include ) 设置 target 需要链接的库 指定链接动态库或静态库 target_link_libraries(demo libface.a) # 链接libface.a target_link_libraries(demo libface.so) # 链接libface.so 指定全路径 target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.a) target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.so) 指定链接多个库 target_link_libraries(demo${CMAKE_CURRENT_SOURCE_DIR}/libs/libface.aboost_system.aboost_threadpthread) 三.CMake使用案例 #include stdio.h #include stdlib.h /*** power - Calculate the power of number.* param base: Base value.* param exponent: Exponent value.** return base raised to the power exponent.*/ double power(double base, int exponent) {int result base;int i;if (exponent 0) {return 1;}for(i 1; i exponent; i){result result * base;}return result; } int main(int argc, char *argv[]) {if (argc 3){printf(Usage: %s base exponent \n, argv[0]);return 1;}double base atof(argv[1]);int exponent atoi(argv[2]);double result power(base, exponent);printf(%g ^ %d is %g\n, base, exponent, result);return 0; }最简单的 CMakeLists.txt 文件 # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo1) # 指定生成目标 add_executable(Demo main.cc) 多个源文件 同一目录多个源文件 本小节对应的源代码所在目录Demo2。 上面的例子只有单个源文件。现在假如把 power 函数单独写进一个名为MathFunctions.c 的源文件里使得这个工程变成如下的形式 ./Demo2|--- main.cc|--- MathFunctions.cc|--- MathFunctions.h 这个时候CMakeLists.txt 可以改成如下的形式 # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo2) # 指定生成目标 add_executable(Demo main.cc MathFunctions.cc) 唯一的改动只是在 add_executable 命令中增加了一个 MathFunctions.cc 源文件。这样写当然没什么问题但是如果源文件很多把所有源文件的名字都加进去将是一件烦人的工作。更省事的方法是使用 aux_source_directory 命令该命令会查找指定目录下的所有源文件然后将结果存进指定变量名。其语法如下 aux_source_directory(dir variable) 因此可以修改 CMakeLists.txt 如下 # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo2) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS) # 指定生成目标 add_executable(Demo ${DIR_SRCS}) 这样CMake 会将当前目录所有源文件的文件名赋值给变量 DIR_SRCS 再指示变量 DIR_SRCS 中的源文件需要编译成一个名称为 Demo 的可执行文件。 多个目录多个源文件 本小节对应的源代码所在目录Demo3。 现在进一步将 MathFunctions.h 和 MathFunctions.cc 文件移动到 math 目录下。 ./Demo3|--- main.cc|--- math/|--- MathFunctions.cc|--- MathFunctions.h 对于这种情况需要分别在项目根目录 Demo3 和 math 目录里各编写一个 CMakeLists.txt 文件。为了方便我们可以先将 math 目录里的文件编译成静态库再由 main 函数调用。 根目录中的 CMakeLists.txt # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (Demo3) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS) # 添加 math 子目录 add_subdirectory(math) # 指定生成目标 add_executable(Demo main.cc) # 添加链接库 target_link_libraries(Demo MathFunctions) 该文件添加了下面的内容: 第3行使用命令 add_subdirectory 指明本项目包含一个子目录 math这样 math 目录下的 CMakeLists.txt 文件和源代码也会被处理 。第6行使用命令 target_link_libraries 指明可执行文件 main 需要连接一个名为 MathFunctions 的链接库 。 子目录中的 CMakeLists.txt # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory(. DIR_LIB_SRCS) # 生成链接库 add_library (MathFunctions ${DIR_LIB_SRCS})
http://www.zqtcl.cn/news/632144/

相关文章:

  • 手机必备软件100个网站建设和优化排名
  • 天津公司网站怎样制作网页设计图片尺寸
  • 网站建设中模板代码网络营销推广公司哪家好
  • 百度免费建立网站搜索引擎推广效果
  • 网站建设分金手指排名十二建设内容管理网站的目的
  • 无锡网站策划制作网站的工具
  • 免费的网站开发软件百度做网站推广的费用
  • 汽车维修东莞网站建设怎么用阿里的域名 做网站
  • 网站怎么做免费cosy WordPress
  • wordpress 关闭自动更新青岛济南网站建设优化
  • 外贸网站推广平台哪个好如何建设手机端网站
  • linux新建网站巩义网站建设定制
  • 网站建设要什么软件有哪些北京seo
  • 空调设备公司网站建设wordpress 4.9
  • 潮州市网站建设公司网页设计代码模板素材
  • 深圳做网站开发费用个人网页设计作品手绘
  • 怎样做网站跳转国内企业建站模板
  • 优化网站哪个好互联网公司市值
  • 广州微信网站开发游戏企业用什么程序做网站
  • 深圳赶集同城网站建设网站空间类型
  • 怎么样做网站代wordpress手机上传图片插件
  • 西安做网站xamokjwordpress 酒业模板
  • 做微博网站如何开网店卖自己的东西
  • 黄骅市有什么好玩的地方常州百度seo排名
  • 做英语在线翻译兼职网站公交建设公司的官网
  • 做网站需要什么电脑律师事务所在线咨询免费
  • 网站建设推广公司需要哪些岗位建站模板源码
  • 网站深圳优化建设购物网站模版
  • 网站后端用什么软件做广西城乡建设部网站首页
  • wordpress android客户端湛江网站关键词优化