求一个都是h动漫网站nscmake 工具

软件介绍:CMake是一款免费实用的编程工具,旨在构建、测试和软件打包。该软件是用于控制软件使用简单的平台和编译器编译过程独立配置文件。CMake生成本机makefile和工作区,可以使用您所选择的编译器环境。
& 关键字:
下载地址:
如果您发现该软件不能下载,为了保证您快速的下载,推荐使用[网际快车]等专业工具下载. 为确保所下软件能正常使用,请使用[WinRAR v3.8]或以上版本解压本站软件.站内软件都是由网上收集,只供网友学习使用,如果所收集的软件侵犯了您的版权,请告知。一起学习CMake – 02 - DoubleLi - 博客园
本节介绍如何用CMake来设置软件的版本号
在《一起学习CMake - 01》中我们看到了如何用CMakeLists.txt来构建一个最简单的工程,这一节里我们一起来看看如何用CMake对开发的软件进行版本号的设置。在介绍这方面的内容时,先简单看一下在软件开发中是如何对版本号进行设置的,如VTK 5.6.1,软件当中的版本都表示什么意思。
*******************************************************************************
关于软件版本号的问题
完全的版本号定义,分三项::&主版本号&.&次版本号&.&修订版本号&,如 1.0.0。
版本号升级原则:
主版本号:功能模块有大的变动,比如增加多个模块或者整体架构发生变化。
次版本号:和主版本相对而言,次版本号的升级对应的只是局部的变动。但该局部的变动造成了程序和以前版本不能兼容,或者对该程序以前的协作关系产生了破坏,或者是功能上有大的改进或增强。
修订版本号:局部的变动,主要是局部函数的功能改进,或者bug的修正,或者功能的扩充。
1. 各种软件的版本号是怎么确定的,怎样的跨越才能算是由bate到正式版?
原则上,自第一个稳定版本发布后,修订版本号会经常性改动,而次版本号则依情况作改动,主版本号改动的频率很低,除非有大的重构或功能改进。对于小项目而言,甚至可以简化为:&.&次版本号&.&修订版本号&。
版本号比较自由,至于Beta版或者是正式版跟版本号之间并没有任何关系,只要达到正式版的要求的话,即使版本号是1.0或者0.1都可能是正式版的。
* Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。
* Beta版: 该版本相对于&版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。
* RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。
* Release版: 该版本意味&最终版本&,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
2. 版本命名规范
软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.1.1.110108_beta。
3. 版本号定修改规则
* 主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改。
* 子版本号(1):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目决定是否修改。
* 阶段版本号(1):一般是 Bug 修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由项目经理决定是否修改。
* 日期版本号(110108):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。
* 希腊字母版本号(beta):此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。
*******************************************************************************
详细的关于软件版本号的问题,可以参考百度百科等资料的介绍。下面开始介绍如何用CMake来对自己开发的软件进行版本号的设置。
在第一节所建的目录里,再建立一个空的文件夹:HelloCMake2(在我机子的完整路径是:D:\CMake\CMake-Study\HelloCMake2),然后把HelloCMake里的文件CMakeLists.txt和HelloCMake.cpp两个文件复制到HelloCMake2目录下,打开该目录下的CMakeLists.txt文件,里面的内容应该是:
cmake_minimum_required(VERSION 2.6)
project(HelloCmake)
add_executable(HelloCMake hellocmake.cpp)
接着把它更改为:
cmake_minimum_required(VERSION 2.6)
project(HelloCmake)
#&在CMake里设置HelloCMake软件的主版本号为1,次版本号为0。
set ( HelloCMake_VERSION_MAJOR 1 )
set ( HelloCMake_VERSION_MINOR 0 )
configure_file(
&&&&&&&&&&${PROJECT_SOURCE_DIR}/HelloCMakeConfig.h.in&
&&&&&&&&&&${PROJECT_BINARY_DIR}/HelloCMakeConfig.h&
&&&&&&&&&)
Include_directories (&${PROJECT_BINARY_DIR}&)
add_executable(HelloCMake hellocmake.cpp)
然后在HelloCMake2目录下创建一个文本文件(txt),重命名为&HelloCMakeConfig.h.in&,这里Windows会弹出对话框警告你文件后缀被更改了(原来是***.txt的,现在改为***.in),问题是否继续,点确认更改。
然后用记事本打开HelloCMakeConfig.h.in文件,在里面输入下面的代码:
// the configured options and settings for HelloCMake
#define HelloCMake_VERSION_MAJOR @HelloCMake_VERSION_MAJOR@
#define HelloCMake_VERSION_MINOR @HelloCMake_VERSION_MINOR@
到此为止就完成了用CMake对自己的软件进行版本号设置的一些前期工作,接着打开HelloCMake.cpp文件,把HelloCMakeConfig.h文件包含到该源文件中去,然后在里面加入一些打印HelloCMake软件版本号的信息,看看我们在CMake里设置的版本有没有效果,完整的HelloCMake.cpp代码如下:
#include&&iostream&
#include&"HelloCMakeConfig.h"
int&main(int&argc,&char&*argv[])
&&std::cout&&"HelloCMake软件的主版本号是:"
&&&&&&&&&&&&&&HelloCMake_VERSION_MAJOR&&&&std::
&&std::cout&&"HelloCMake软件的次版本号是:"
&&&&&&&&&&&&&&HelloCMake_VERSION_MINOR&&&&std::&
&&fprintf(stdout,&"%s Version is: %d.%d\n",
&&&&&&&&&&&&&&&argv[0],
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HelloCMake_VERSION_MAJOR,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HelloCMake_VERSION_MINOR);
&&std::cout&&"Study CMake Together - HelloCMake2"&&std::
&&return&0;
打开CMake,根据《一起学习CMake - 01》的流程走一遍CMake。在我机子上我把编译目录设置为:D:\CMake\CMake-Study\HelloCMake2-bin。Configure, Generate完了以后打开HelloCMake2-bin目录下的HelloCMake.sln文件,编译链接,你就会看到整个工程能正确地运行了。
接着我们来看看为什么要这么写,里面的每句代码都表示什么意思。首先看看HelloCMake2目录下的CMakeLists.txt文件,与《一起学习CMake - 01》相比较多了下面的代码:
1. #&在CMake里设置HelloCMake软件的主版本号为1,次版本号为0。
2. set ( HelloCMake_VERSION_MAJOR 1 )
3. set ( HelloCMake_VERSION_MINOR 0 )
4. configure_file(
5.&&&&&${PROJECT_SOURCE_DIR}/HelloCMakeConfig.h.in&
6.&&&&&${PROJECT_BINARY_DIR}/HelloCMakeConfig.h&
8. Include_directories (&${PROJECT_BINARY_DIR}&)
第1句,注释作用,在CMake里的注释符号是&#&,这里面的注释已经对第2,3句代码的作用说得很清楚了。&set&是CMake的命令,用于定义变量,即定义了HelloCMake_VERSION_MAJOR和HelloCMake_VERSION_MINOR的值分别为1和0。
第4 & 7句代码,意思就是把& ${PROJECT_SOURCE_DIR}&目录下的文件HelloCMakeConfig.h.in用CMake自动生成后的头文件HelloCMakeConfig.h放到目录&${PROJECT_BINARY_DIR}&。&& ${PROJECT_SOURCE_DIR}&表示的是工程源文件所在的目录,换句话说就是你在CMake的&where is the source code&里设置的路径;同样&&&${ PROJECT_BINARY_DIR }&就是你在CMake的&where to build the binaries&里设置的路径。这两个变量是CMake里预先定义好的,可以直接拿来用。
第8句代码,意思就是把& ${PROJECT_BINARY_DIR}&路径加入到工程头文件的搜索路径中去,这样工程编译链接时就能够找到HelloCMakeConfig.h这个头文件。因为我们在上面一段已经知道,HelloCMakeConfig.h是CMake根据HelloCMakeConfig.h.in文件自动生成的,并且放在& ${PROJECT_BINARY_DIR}&目录下,所以必须把这个路径加到工程的搜索路径中去。加进去以后你会发现编译环境的变化如下图所示。
& xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" /&
接着来看看HelloCMake2目录下的文件HelloCMakeConfig.h.in里的内容:
// the configured options and settings for HelloCMake
#define HelloCMake_VERSION_MAJOR @HelloCMake_VERSION_MAJOR@
#define HelloCMake_VERSION_MINOR @HelloCMake_VERSION_MINOR@
很简单,只是定义了两个宏,分别是HelloCMake软件的主版本号和次版本号,&//&这一行当然就表示注释了,你可以打开HelloCMake-bin目录下的自动生成后的HelloCMakeConfig.h文件跟HelloCMakeConfig.h.in文件作一下对比,你会发现它们之前太神似了:
// the configured options and settings for HelloCMake
#define&HelloCMake_VERSION_MAJOR&1
#define&HelloCMake_VERSION_MINOR&0
&@HelloCMake_VERSION_MAJOR@&和&@HelloCMake_VERSION_MINOR@&是取值的意思,这两个值已经在CMakeLists.txt里定义过了,CMake配置工程时要去CMakeLists.txt读取内容,当它发现set ( HelloCMake_VERSION_MAJOR 1 )和set ( HelloCMake_VERSION_MINOR 0 )这两句代码时,CMake就知道变量HelloCMake_VERSION_MAJOR/ HelloCMake_VERSION_MINOR值分别为1和0。然后结合HelloCMakeConfig.h.in生成了头文件HelloCMakeConfig.h,并用这两个变量替代&@HelloCMake_VERSION_MAJOR@&和&@HelloCMake_VERSION_MINOR@&的值,于是就有了HelloCMakeConfig.h里的内容。
然后我们又在HelloCMake.cpp里包含了头文件&HelloCMakeConfig.h&,也就是定义了HelloCMake_VERSION_MAJOR和HelloCMake_VERSION_MINOR两个宏,接下HelloCMake里就可以肆无忌惮地去引用这两个宏了。
这就是用CMake设置软件版本号的整个过程,上面介绍的过程是我个人的理解,如果有不对的地方一定要告诉我(水灵,, QQ:)。
再结合VTK, ITK, IGSTK等开源工具包,可以加深你对用CMake进行软件版本号设置的理解,以VTK为例,在VTK的源文件中肯定有一个文件叫做VTKConfigure.h.in(我这里使用的是VTK 5.6.1版本),在该文件的第165-168行,有如下的代码:
/* Version number.&&*/
#define VTK_MAJOR_VERSION @VTK_MAJOR_VERSION@
#define VTK_MINOR_VERSION @VTK_MINOR_VERSION@
#define VTK_BUILD_VERSION @VTK_BUILD_VERSION@
比较一下跟我们上面提到的HelloCMakeConfig.h.in里的一样吗?
再打开VTK源文件目录下的CMakeLists.txt文件,在第64-67行你会发现有如下代码:
# VTK version number.&&An even minor number corresponds to releases.
SET(VTK_MAJOR_VERSION 5)
SET(VTK_MINOR_VERSION 6)
SET(VTK_BUILD_VERSION 1)
再看看这个文件的第1065行开始,有如下代码:
INCLUDE_DIRECTORIES(
&&${VTK_INCLUDE_DIRS_BUILD_TREE}
&&${VTK_INCLUDE_DIRS_SOURCE_TREE}
&&${VTK_INCLUDE_DIRS_BUILD_TREE_CXX}
&&${VTK_INCLUDE_DIRS_SYSTEM}
又比较一下跟我们例子HelloCMake2里的CMakeLists.txt的内容一样吗?
最后再打开VTK的编译目录,你会有里面发现一个文件叫做VTKConfigure.h这个头文件。
用CMake进行软件版本号的设置是不是很简单?只要在CMakeLists.txt里加入一些代码,准备一个YourProjectConfigure.h.in,然后用CMake来构建工程就OK了。
附HelloCMake2程序执行的结果截图:学习cmake_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢一 CMake CMake 是一个跨平台的构建工具,通过一次的cmake
script的编写,能够生成常见平台常见IDE的project文件或maikefile文件,例如生成visual studio
project文件,eclipse
project文件,makefile等;同时相对于linux的automake工具生成makefile的过程相对简单。 & 主页: 参考: Eclipse 插件:
二 特点: 1)配置文件是cmake script,cmake script是特定于software build的专用编程语言; 2)内置的对c,c++,java,fortran的依赖的分析;
3)通过cmake script支持swig,qt,fltk; 4)支持几乎所有的IDE工程文件或makefile的生成,例如visual studio 6-10,eclipse cdt等; 6)使用传统的时间戳来检测文件内容的改变; 7)支持并行build; 8)依赖的globle view,可以使用cmake产生依赖图; 9)支持cross compiler。 10)支持几乎所有的平台; 11)与ctest,cpack,cdash 集成;
& 三 CMake的generators 1)cmake在windows上的generator的列表:
2) Linux下generator:The following generators are available on this platform:& Unix Makefiles&&&&&&&&&&&&& = Generates standard UNIX makefiles.& CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.& Eclipse CDT4 - Unix Makefiles&& = Generates Eclipse CDT 4.0 project files.& KDevelop3&&&&&&&&&&&&&&&&&& = Generates KDevelop 3 project files.& KDevelop3 - Unix Makefiles& = Generates KDevelop 3 project files. 3)参考:http://www.cmake.org/Wiki/CMake_Generator_Specific_Information
& 四 实例 1)过程简单描述 # 编写 CmakeLists.txt。# 执行命令 “cmake PATH”&生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。# 使用 make 命令进行编译。& 2)简单实例(在windows上编译sample工程) 1】实例文件结构如下:
2】main.cpp如下:
#include&iostream&&int&main(){&&&&&std::cout&&"Hello&word!"&&std::&&&&&return&0;} &3】Cmakelists.txt如下:
project(Sample)cmake_minimum_required(VERSION&2.8)aux_source_directory(.&DIR_SRCS)add_executable(Sample&${DIR_SRCS}) &4】cmakefiles.txt的解释: "#"后面的内容为注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。PROJECT(sample)命令用来表示项目名称为smaple。CMAKE_MINIMUM_REQUIRED(VERSION 2.6)用来限定需要cmake2.6的版本。aux_source_directory(&dir& &variable&)该命令会把参数 &dir& 中所有的源文件名称赋值给参数 &variable&。ADD_EXECUTABLE(sample ${DIR_SRCS})表示将变量 DIR_SRCS 中的源文件编译成一个名称为sample的可执行文件。 5】生成VS工程文件和build如下:
6】生成Eclipse+MinGW的工程文件如下:
& 五语法 ADD_SUBDIRECTORY( src )指明本项目包含一个子目录 src 。 TARGET_LINK_LIBRARIES( main Test )指明可执行文件 main 需要连接一个名为Test的链接库 。 六参考 /developerworks/cn/linux/l-cn-cmake/ http://en.wikipedia.org/wiki/CMake& & 完!
阅读(...) 评论()}

我要回帖

更多关于 跪求一个网站你们懂的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信