CMake Configuration Options

注:

  本文翻译自 dcmtk_wiki: Howto_CMakeConfiguration.

  DCMTK版本(原文):dcmtk-3.6.0  CMAKE版本(原文):CMake-2.8.0

  DCMTK版本(译者):dcmtk-3.6.0  DCMTK版本(译者):CMake-3.7.0

当我们准备用CMAKE编译DCMTK时,会显示一些配置选项。如果看起来没什么问题的话 ------ 哈哈哈,别担心,它还没配置好呢 :-) 下面将会是一个概览,用于介绍CMAKE中每个选项的含义和怎样选择才更合理。


Introduction

注意:CMake本身并不会编译DCMTK,它被用来生成项目文件(例如.用于 Visual Studio-Windows,Makefile-Unix, Xcode-Mac OS X),这些项目文件随后就可以使用编译器进行编译了。编译器该如何配置和管理DCMTK呢?不用担心,大多数的项目配置工作已经在DCMTK自带的CMAKEList.txt中完成了。

然而,还是有一些选项留给你来改变编译器以及DCMTK的编译过程。如果你确实不care那些特殊功能的话,你仅需要保持默认设置,然后忽略掉那些额外功能。如果你有兴趣的话,可以瞧一瞧下面的解释。


Pre-Configuration

这就是你初次启动CMake(cmake-gui)的样子。

在这一步的配置过程中,只有两行需要填写,以下是他们的用途:

  • "Where is the source code":请在这添加DCMTK的资源文件目录,它应该在你硬盘的某个地方。注意,CMake已经支持斜杠了。
  • "Where to build the binaries":在这添加的一个目录,CMake会将生成的DCMTK项目文件放在哪里。当我们开始编译的时,所有的中间和结果文件(二进制)都将被放置在这。这不是说你把DCMTK安装到这里了,那要在稍后的配置中设置呢。

现在,点击 Configure。


Type of project file

现在,CMake 将会问你,要生成什么类型的项目文件呢? 给出的列表可能因CMake版本和操作系统的不同而存在一些差异。

Windows

在Windows下,大多时候我们使用的都是Visual Studio,DCMTK支持Visual Studio 6 到Visual Studio 20101. 确保你已经安装了你选择的版本,否则CMake在测试设置的时候,将会还给你一个 failure。相信你可以搞到一个能工作的VS版本。

当然,生成一个Windows下的NMake Makefiles也是可行的,如果你感兴趣,可以在英文版本中找到它。

Unix-like systems

在Unix下,你应该选择Unix Makefiles。 这将允许你在稍后使用命令行下的‘make’命令来编译DCMTK。当然,你或许会选择生成KDevelop 项目文件,它可能会工作,但我们并没有对他进行完全的测试。

Mac OS X

如果是在Mac OS X下构建项目,你可以在Unix Makefiles 或XCode works中任选一个。Mac OS X 遵循POSIX标准,所以它仍旧是Unix家的;当然,作为Apple的标准可视化开发平台,XCode 的支持也是无可厚非的。不管你选了哪一个,DCMTK都应该能很好的工作。


The fast way

如果你对细节不是很感兴趣,只是想用默认的设置来构建DCMTK项目。你可以直接点击generate,然后就会在之前设置的项目生成目录(Where to build the binaries)中获得你的项目。嗯,你在CMake中的任务也就结束了。

如果你对调整DCMTK的构建配置感兴趣的话,请继续阅读。


Prominent Configuration Options

现在,忽略掉”SearchGroupedAdvanced“。让我们从截屏中红色区域中的行开始,他们在编译DCMTK是起着非常重要的作用。

CMAKE_BACKWARDS_COMPATIBILITY: 用于构建DCMTK的CMake的最低版本要求。如果你使用较老的版本,在尝试生成项目时CMake会报错。

CMAKE_INSTALL_PREFIX:指示DCMTK稍后将会被安装在哪。这里的默认设置是不同的,取决于操作系统的类型,你也可以填入你自己的路径。请再次注意,DCMTK不是由CMake直接安装的。在你告诉你的构建系统去生成它时,你才会得到它。例如,你可以在Visual Studio中开始安装。

DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS:如果你将要在Windows下用Visual Studio来编译项目的话,你或许会感兴趣。如果检测到是在Widows下工作的,DCMTK CMake 默认开启编译器标志。然而,如果你是一名老手,你或许会自己设置编译器标志。如果那真发生了,你就不能选择checkbox。在你知道你在做什么的时候,再这样做吧。

DCMTK_WITH_DOXYGEN:DCMTK API 文档是自动从DCMTK源文件中提取和生成的。为此,需要用到免费工具 doxygen。如果CMake在你的系统中找到了doxygen,这个选项就是开启的。例如,HTML API 文档可能将会被构建。如果没找到的话这个选项就是关闭的。如果你确信你的系统安装了doxygen,你可以手动的将doxygen.exe可执行文件所在的路径添加到这里。

Third party libraries

DCMTK没有三方库也可以很好的工作。然而,如果没有他们的话,一些工具将会失去其扩展功能,另一些将不能正常工作(如果你尝试的话,他们会告诉你他们不能)。你能从DCMTK官网获得Windows版的预编译版本的DCMTK三方库(查看”support libraries“)。对于其他系统来说,他们可以自己安装或编译。

下列的库可能被DCMTK使用:

  • OpenSSL
  • libpng
  • libtiff
  • libxml
  • zlib

在CMake的配置窗口中,他们中的每一个都有两个不同的选项:

  • DCMTK_WITH_XXX(XXX是OPENSSL,LIBPNG,LIBTIFF,LIBXML或ZLIB):禁用或启用每个支持库。在默认情况下是启用或禁用的,取决于CMake是否在你的系统中找到了相应的库。
  • WITH_XXXINC(XXX是OPENSSL, LIBPNG, LIBTIFF, LIBXML或ZLIB):如果CMake在你的系统找到了库,库所在的路径将填充在这里。如果出现的是WITH_XXXINC_NOTFOUND,你可以自己添加库的路径到这里。如果这样做了,为了保证库被编译,你还需要检查DCMTK_WITH_XXX处于开启状态。

如果你修改了某些路径,CMake将会遗忘之前你手动配置的路径。

Private Tags

这是一个可有可无的标签,对应DCMTK为增强其灵活性而设置的私有标签。如果你有兴趣,可以阅读原文 Private Tags .

Threads

DCMTK由他自己的跨平台的,线程相关的类。例如:信号(OFSemaphare), 互斥锁(OFMutex)等等。你可以通过选择/不选择 DCMTK_WITH_THREADS来开启/关闭它们。

需要注意的是:DCMTK没有线程库也能正常运转。但如果你想将DCMTK添加至多线程运行的程序中,那么你需要启用DCMTK的线程功能来保护DCMTK内部数据的安全。

Executable/Library Output Path

EXECUTABLE_OUTPUT_PATH:预定义的CMake变量,用于配置项目的可执行文件输出目录。

LIBRARY_OUTPUT_PATH:预定义的CMake变量,用于配置项目的静态库输出目录。

注1:3.6.0版本是2011年发布的,支持的VS版本是Visual Studio 2006 - Visual Studio 2010。最新预览版的VS版本已提升至Visual Studio 2010- Visual Studio 2015.

CMAKE 配置选项的更多相关文章

  1. cmake 查看配置选项

    cmake 查看配置选项可以用如下命令 cmake . -LH 查看help > cmake -h    cmake version 2.6-patch 4 Usage cmake [optio ...

  2. Qt5.7.0配置选项(configure非常详细的参数)

    configure是一个命令行工具,用于配置Qt编译到指定平台.configure必须运行于Qt源码根目录.当运行configure时,编译源码使用的是所选工具链中的make工具. 一.源码目录.编译 ...

  3. Linux-4.4-x86_64 内核配置选项简介【转】

    转自:http://fx114.net/qa-188-150553.aspx 本篇文章主要介绍了"Linux-4.4-x86_64 内核配置选项简介",主要涉及到Linux-4.4 ...

  4. SQL Serve里你总要去改变的3个配置选项

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  5. 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的.GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时 ...

  6. SQL Server安装完成后3个需要立即修改的配置选项(转载)

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  7. set_include_path — 设置 include_path 配置选项为当前脚本设置 include_path 运行时的配置选项。

    说明 string set_include_path ( string $new_include_path ) 为当前脚本设置 include_path 运行时的配置选项. 参数 new_includ ...

  8. nodejs的mysql模块学习(三)数据库连接配置选项详解

    连接选项 当在创建数据连接的时候 第一种大多数人用的方法 let mysql = require('mysql'); let connection = mysql.createConnection({ ...

  9. Android Gradle 配置选项合集

    //让gradle 引入构建安卓app的插件 apply plugin: 'com.android.application' //自定义变量, 使用的时候不需要 ext 前缀 ext { minSdk ...

随机推荐

  1. Activity的保存状态和状态恢复

    Activity的保存状态和状态恢复 当系统内存不足时,系统会强制结束一些不可见的Activity以节省内存资源.在某些情况下,当被强制结束的Activity再次显示时会出现一些问题. 例如:一个AP ...

  2. JAVAWEB学习总结 HttpServletResponse对象(一)

    Web服务器收到客户端(浏览器)的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象. request和response对象既然代表请求和响 ...

  3. Windows平台下PHP环境搭建

    在Windows平台上搭建PHP的开发环境可以下载WAMP(Windows.Apache.MySQL.PHP的首字母缩写)集成化安装包.这样就不需要单独安装Apache.MySQL和PHP了. 这款软 ...

  4. Oracle----SQL语句积累 (Oracle 导入 dmp文件)

    Oracle----SQL语句积累 (Oracle 导入 dmp文件) Oracle SQL PL  导入dum文件 1.数据库DBA权限: 注意:这个是在cmd命令行中直接输入,不需要进入Oracl ...

  5. android view : 动画

    view中除了必要的移动之外,也可以使用动画来完善视觉效果.android中的动画在2.3之前只有帧动画和补间动画.3.0之后就加入了属性动画.其实说到动画是什么?就是一个连续的view的集合.帧动画 ...

  6. SQL Server如何编辑超过前200行的数据

    从SQL Server 2008开始,微软为了提高查询效率等原因,右键点击表时弹出菜单中默认没有"显示所有行",而以"选择前1000行"替代.这有时会为我们带来 ...

  7. MySQL数据库在linux的安装,编程与操作

    一.安装 ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server   2. apt-get isntall mysql ...

  8. Linux学习之路—Linux文件权限

    内容来源于鸟哥私房菜 1.Linux文件属性 1)第一列为文件类型与权限 第一个字符表示文件的类型: [d]表示目录 [-]表示文件 [l]表示连接文件 [b]表示设备文件中可供存储的接口设备,例如硬 ...

  9. mvc4 部署http错误403.14 forbidden

    1. 检查服务器上是否安装了“HTTP重定向”功能和“静态内容压缩”功能(在添加/删除程序或增加角色处安装).这是我所遇到的问题:2. 应用程序池要被配置为“集成”3. 把.net 4.0安装在iis ...

  10. css中font-size的单位总结:px、em、pt

    px:基于像素的单位.像素是一种有用的单位,因为在任何媒体上都可以保证一个像素的差别确实是可见的.em :一般用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是指 ...